Amazon Redshift, geçmiş verilerin izlenmesini ve analizini basitleştirmek için sıfır ETL entegrasyonları için geçmiş modunu duyurdu

Facebok sayfasını beğenin :
sevilen

Tarih:

Düğüm: 4285082

Sürekli gelişen bulut bilişim ve veri yönetimi ortamında AWS, sürekli olarak inovasyonun ön saflarında yer almıştır. Son yıllardaki çığır açan gelişmelerden biri de sıfır ETL entegrasyonu, AWS tarafından tamamen yönetilen ve çıkarma, dönüştürme ve yükleme (ETL) veri hatları oluşturma ihtiyacını en aza indiren bir dizi entegrasyondur. Bu gönderi, sıfır ETL'nin kısa geçmişini, müşteriler için önemini inceleyecek ve heyecan verici yeni bir özelliği tanıtacaktır: geçmiş modu Amazon Aurora PostgreSQL-Uyumlu Sürüm, Amazon Aurora MySQL-Uyumlu Sürüm, MySQL için Amazon İlişkisel Veritabanı Hizmeti (Amazon RDS), ve Amazon DinamoDB ile sıfır ETL entegrasyonu Amazon Kırmızıya Kaydırma.

Sıfır ETL entegrasyonlarının kısa tarihi

Sıfır ETL entegrasyonları kavramı, geleneksel ETL süreçlerindeki artan karmaşıklıklara ve verimsizliklere bir yanıt olarak ortaya çıktı. Geleneksel ETL süreçlerinin geliştirilmesi, sürdürülmesi ve ölçeklenmesi zaman alıcı ve karmaşıktır. Tüm kullanım durumları sıfır ETL ile değiştirilemese de, çoğaltmayı basitleştirir ve çoğaltmadan sonra dönüşüm uygulamanıza olanak tanır. Bu, kaynak veritabanı ile Amazon Redshift arasında ek ETL teknolojisine olan ihtiyacı ortadan kaldırır. Biz AWS'de, özellikle operasyonel veritabanları ile bulut veri ambarları arasında veri entegrasyonuna yönelik daha akıcı bir yaklaşıma olan ihtiyacı fark ettik. Sıfır ETL yolculuğu, 2022'nin sonlarında Amazon Redshift ile Aurora MySQL için özelliği tanıttığımızda başladı. Bu özellik, karmaşık veri iş akışlarını akıcı hale getirmede önemli bir anı işaret etti ve ETL süreçlerine olan ihtiyacı ortadan kaldırırken neredeyse gerçek zamanlı veri çoğaltması ve analizini mümkün kıldı.

İlk sıfır ETL entegrasyonumuzun başarısını temel alarak, müşterilerimizin ihtiyaçlarından geriye doğru çalışarak ve şu gibi özellikleri başlatarak bu alanda sürekli ilerleme kaydettik: veri filtreleme, maddeleştirilmiş görünümlerin otomatik ve artımlı yenilenmesi, yenileme aralığı, ve daha fazlası. Ayrıca, Aurora PostgreSQL, DynamoDB ve Amazon RDS for MySQL'i Amazon Redshift entegrasyonlarına dahil ederek kaynaklarımızın genişliğini artırdık ve verileriniz üzerinde analitik çalıştırmanızı sorunsuz hale getirme taahhüdümüzü sağlamlaştırdık. Sıfır ETL'nin tanıtımı yalnızca teknolojik bir ilerleme değildi; kuruluşların veri stratejilerine nasıl yaklaşabilecekleri konusunda bir paradigma değişimini temsil ediyordu. Ara veri işleme adımlarına olan ihtiyacı ortadan kaldırarak, neredeyse gerçek zamanlı analitik ve karar alma için yeni olanaklar açtık.

Geçmiş modunun tanıtımı: Veri analizinde yeni bir sınır

Zero-ETL, veri entegrasyonunu halihazırda basitleştirdi ve bunu bir adım öteye taşıyan yeni bir özelliği duyurarak yetenekleri daha da geliştirmekten heyecan duyuyoruz: geçmiş modu Amazon Redshift ile. Sıfır ETL entegrasyonlarıyla geçmiş modunu kullanarak, Amazon Redshift'te kaynaktan tam değişiklik verisi yakalamayı (CDC) sürdürerek geçmiş veri analizinizi kolaylaştırabilirsiniz. Geçmiş modu, sıfır ETL veri kaynaklarınızdaki kayıtların geçmiş sürümlerini sorunsuz bir şekilde yakalayıp saklayarak verilerinizin tüm potansiyelini açığa çıkarmanızı sağlar. Amazon Redshift'te gelişmiş geçmiş analizi gerçekleştirebilir, geriye dönük raporlar oluşturabilir, trend analizi gerçekleştirebilir ve yavaşça değişen boyutlar (SCD) Tip 2 tabloları oluşturabilirsiniz. Bu, temel analitik varlıklarınızı birleştirmenizi ve birden fazla uygulama genelinde içgörüler elde etmenizi, maliyet tasarrufları ve operasyonel verimlilikler elde etmenizi sağlar. Geçmiş modu, kuruluşların geçmiş kayıtları sürdürmeye yönelik düzenleyici gerekliliklere uymasını, kapsamlı veri yönetimini ve bilinçli karar almayı kolaylaştırmasını sağlar.

Zero-ETL entegrasyonları, kayıtların neredeyse gerçek zamanlı güncel bir görünümünü sağlar; bu, yalnızca kaynak veritabanlarındaki en son değişikliklerin Amazon Redshift'te tutulduğu anlamına gelir. Geçmiş moduyla Amazon Redshift, geçmiş veri analizine devrim niteliğinde bir yaklaşım sunar. Artık zero-ETL entegrasyonlarınızı, her kayıt sürümünün her kaydın ne zaman eklendiğini, değiştirildiğini veya silindiğini gösteren kaynak zaman damgasıyla birlikte doğrudan Amazon Redshift'te kaynak tablolarındaki kayıtlarınızın her sürümünü izleyecek şekilde yapılandırabilirsiniz. Veri değişiklikleri Amazon Redshift tarafından izlendiği ve saklandığı için bu, veri kaynaklarında yinelenen kopyalar tutmanıza gerek kalmadan uyumluluk gereksinimlerinizi karşılamanıza yardımcı olabilir. Ayrıca, eski verileri sürüm kayıtlarına ayrı bölümler olarak sağlam tutmak için bölümlenmiş tabloları tutmanız ve yönetmeniz ve kaynak veritabanlarında geçmiş verileri tutmanız gerekmez.

Bir veri ambarında en yaygın boyutsal modelleme teknikleri şunlardır: yıldız şeması, ortada bir olgu tablosunun ve çevresinde bir dizi ilişkili boyut tablosunun bulunduğu bir tablodur. boyut kullanıcıların iş sorularını yanıtlayabilmesini sağlamak için gerçekleri ve ölçümleri kategorilere ayıran bir yapıdır. Bir örneği açıklamak gerekirse, tipik bir satış alanında müşteri, zaman veya ürün boyutlardır ve satış işlemleri bir gerçektir. SCD, zaman içinde yavaşça değişebilen nispeten statik veriler içeren bir veri ambarı kavramıdır. Veri ambarında tutulan üç ana SCD türü vardır: Tip 1 (geçmiş yok), Tip 2 (tam geçmiş) ve Tip 3 (sınırlı geçmiş). CDC, iki veritabanı yüklemesi arasında değişen verileri tanımlama yeteneği sağlayan bir veritabanının özelliğidir, böylece değiştirilen veriler üzerinde bir eylem gerçekleştirilebilir.

Bu yazıda, sıfır ETL entegrasyonunda tablolar için geçmiş modunun nasıl etkinleştirileceğini ve tüm geçmiş veri değişikliklerinin SCD2 olarak nasıl yakalanacağını gösteriyoruz.

Çözüme genel bakış

Bu kullanım örneğinde, kurgusal bir ülke çapındaki perakende zinciri olan AnyCompany'nin müşteri tabanlarına dair değerli içgörüler elde etmek için AWS hizmetlerini nasıl kullandığını inceliyoruz. Ülke genelinde birden fazla lokasyona sahip olan AnyCompany, iki temel girişim aracılığıyla müşteri davranışına ilişkin anlayışlarını geliştirmeyi ve pazarlama stratejilerini iyileştirmeyi amaçlıyor:

  • Müşteri göç analizi – AnyCompany, coğrafi hareketlerin satın alma davranışını nasıl etkilediğine odaklanarak müşteri yer değiştirme modellerini izlemeyi ve analiz etmeyi amaçlamaktadır. Bu değişiklikleri izleyerek şirket, envanterini, hizmetlerini ve yerel pazarlama çabalarını müşterilere yeni lokasyonlarında daha iyi hizmet verecek şekilde uyarlayabilir.
  • Pazarlama kampanyasının etkinliği – Perakendeci, kampanya yürütme anında müşteri demografisine dayalı hedefli pazarlama kampanyalarının etkisini değerlendirmek istiyor. Bu analiz, AnyCompany'nin pazarlama stratejilerini iyileştirmesine, kaynak tahsisini optimize etmesine ve genel kampanya performansını iyileştirmesine yardımcı olabilir.

AnyCompany, hem coğrafi hareketlilik hem de pazarlama duyarlılığı açısından müşteri profillerindeki değişiklikleri yakından takip ederek, daha bilinçli, veriye dayalı kararlar alabilecek şekilde konumlanıyor.

Bu gösterimde, kaynak tabloya bir örnek veri kümesi yükleyerek başlıyoruz. müşteri, Aurora PostgreSQL-Compatible'da. Geçmiş kayıtlarını korumak için, geçmiş modunu etkinleştiriyoruz müşteri Amazon Redshift'teki değişiklikleri otomatik olarak izleyen tablo.

Geçmiş modu açıldığında, hedef tabloya otomatik olarak aşağıdaki sütunlar eklenir: müşteri, kaynaktaki değişiklikleri takip etmek için Amazon Redshift'te.

Sütun adı Veri tipi Açıklama
_record_is_active Boole Hedefteki bir kaydın şu anda kaynakta etkin olup olmadığını gösterir. True, kaydın etkin olduğunu gösterir.
_record_create_time Zaman Damgası Kaynak kaydın etkin olduğu başlangıç ​​saati (UTC).
_record_delete_time Zaman Damgası Kaynak kaydının güncellendiği veya silindiği bitiş saati (UTC).

Daha sonra bir boyut tablosu oluşturuyoruz, customer_dim, Amazon Redshift'te bir SCD tablosu oluşturma örneğini göstermek için ek bir vekil anahtar sütunuyla. Bazıları yalnızca etkin veya etkin olmayan kayıtları analiz ederken diğer sorgular belirli bir tarihe ait verileri analiz ediyor olabilecek farklı sorgular için sorgu performansını optimize etmek için, aşağıdakilerden oluşan sıralama anahtarını tanımladık: _record_is_active, _record_create_time, ve _record_delete_time nitelikler müşteri_dim tablo.

Aşağıdaki şekil, Aurora PostgreSQL-Compatible'daki kaynak tablonun şemasını ve Amazon Redshift'teki hedef tablo ve hedef müşteri boyut tablosunu göstermektedir.
plan

Veri doldurma sürecini kolaylaştırmak için, adında saklı bir prosedür geliştirdik SP_Customer_Type2_SCD()Bu prosedür, artımlı verileri customer_dim çoğaltılmış tablodan customer tablo. Kaynak tablodaki güncellemeler, eklemeler ve silmeler dahil olmak üzere çeşitli veri değişikliklerini işler ve bir SCD2 yaklaşımı uygular.

Önkoşullar

Başlamadan önce aşağıdaki adımları tamamlayın:

  1. Aurora DB kümenizi ve Redshift veri ambarınızı gerekli parametreler ve izinlerle yapılandırın. Talimatlar için bkz. Amazon Redshift ile Aurora sıfır ETL entegrasyonlarına başlarken.
  2. Amazon Redshift ile Aurora sıfır ETL entegrasyonu oluşturun.
  3. Bir Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) terminali veya kullanımı AWS BulutKabuğu, Aurora PostgreSQL kümesine SSH ile bağlanın ve yüklemek için aşağıdaki komutları çalıştırın psql'in:
sudo dnf install postgresql15
psql --version

  1. Örnek kaynak verilerini yükleyin:
    • İndiriniz TPC-DS örnek veri kümesi customer masayı çalışan makinenin üzerine koyun psql'in.
    • EC2 terminalinden, varsayılan süper kullanıcıyı kullanarak Aurora PostgreSQL DB'ye bağlanmak için aşağıdaki komutu çalıştırın postgres:
      psql -h <RDS Write Instance Endpoint> -p 5432 -U postgres

    • Veritabanını oluşturmak için aşağıdaki SQL komutunu çalıştırın zetl:
      create database zetl template template1;

    • Yeni oluşturulan veritabanına bağlantıyı değiştirin:
    • oluşturmak customer tablo (aşağıdaki örnek bunu genel şemada oluşturur):
      CREATE TABLE customer(
          c_customer_id char(16) NOT NULL PRIMARY KEY,
          c_salutation char(10),
          c_first_name char(20),
          c_last_name char(30),
          c_preferred_cust_flag char(1),
          c_birth_day int4,
          c_birth_month int4,
          c_birth_year int4,
          c_birth_country varchar(20),
          c_login char(13),
          c_email_address char(50),
          ca_street_number char(10),
          ca_street_name varchar(60),
          ca_street_type char(15),
          ca_suite_number char(10),
          ca_city varchar(60),
          ca_county varchar(30),
          ca_state char(2),
          ca_zip char(10),
          ca_country varchar(20),
          ca_gmt_offset numeric(5, 2),
          ca_location_type char(20)
      );

    • Vurgulanan veri kümesi konumunu dizin yolunuzla değiştirdikten sonra indirilen veri kümesinden müşteri verilerini yüklemek için aşağıdaki komutu çalıştırın:
      copy customer from '/home/ec2-user/customer_sample_data.dat' WITH DELIMITER '|' CSV;

    • Tablonun başarıyla oluşturulduğunu ve örnek verilerin yüklendiğini doğrulamak için aşağıdaki sorguyu çalıştırın:
      SELECT table_catalog, table_schema, table_name, n_live_tup AS row_count
      FROM information_schema.tables JOIN g_stat_user_tables ON table_name = relname
      WHERE table_type = 'BASE TABLE'
      ORDER BY row_count DESC;

SQL çıktısı aşağıdaki gibi olmalıdır:

table_catalog | table_schema | table_name | row_count
---------------+--------------+------------+-----------
zetl          | public       | customer   |   1200585
(1 row)

Amazon Redshift'te bir hedef veritabanı oluşturun

Verilerinizi kaynağınızdan Amazon Redshift'e kopyalamak için, Amazon Redshift'teki entegrasyonunuzdan bir hedef veritabanı oluşturmanız gerekir. Bu gönderi için, halihazırda şu adla bir kaynak veritabanı oluşturduk: zetl Aurora PostgreSQL-Compatible'da önkoşulların bir parçası olarak. Hedef veritabanını oluşturmak için aşağıdaki adımları tamamlayın:

  1. Amazon Redshift konsolunda şunu seçin: Sorgu düzenleyicisi v2 Gezinti bölmesinde.
  2. Aşağıdaki komutları çalıştırarak şu adlı bir veritabanı oluşturun: postgres Amazon Redshift'te sıfır ETL kullanarak integration_id geçmiş modu açıkken.
-- Amazon Redshift SQL commands to create database
SELECT integration_id FROM svv_integration; -- copy this result, use in the next sql
CREATE DATABASE "postgres" FROM INTEGRATION '<result from above>' DATABASE "zetl" SET HISTORY_MODE = TRUE;

Amazon Redshift'te hedef veritabanı oluşturulurken geçmiş modunun açılması, mevcut ve gelecekte oluşturulacak yeni tablolar için geçmiş modunun etkinleştirilmesini sağlar.

  1. Başlangıç ​​verilerinin kaynaktan Amazon Redshift'e başarılı bir şekilde kopyalandığını doğrulamak için aşağıdaki sorguyu çalıştırın:
select is_history_mode, table_name, table_state, * from svv_integration_table_state;

Tablo customer göstermeli table_state as Synced ile is_history_mode as true.
histmode-doğru

Mevcut sıfır ETL entegrasyonları için geçmiş modunu etkinleştirin

Geçmiş modu, Amazon Redshift konsolu veya SQL komutları kullanılarak mevcut sıfır ETL entegrasyonlarınız için etkinleştirilebilir. Kullanım durumunuza bağlı olarak, geçmiş modunu veritabanı, şema veya tablo düzeyinde açabilirsiniz. Amazon Redshift konsolunu kullanmak için aşağıdaki adımları tamamlayın:

  1. Amazon Redshift konsolunda şunu seçin: Sıfır ETL entegrasyonları Gezinti bölmesinde.
  2. İstediğiniz entegrasyonu seçin.
  3. Klinik Geçmişi yönet modu.
    zelt-integratin

Bu sayfada, tüm tablolar veya tabloların bir alt kümesi için geçmiş modunu etkinleştirebilir veya devre dışı bırakabilirsiniz.

  1. Seç Bireysel tablolar için geçmiş modunu yönet seçin açmak tarih modu için customer
  2. Klinik Değişiklikleri Kaydet.
    tablo-hist-modu
  3. Değişiklikleri onaylamak için şunu seçin: Tablo istatistikleri ve emin ol Geçmiş modu is On için customer.
    tablo istatistikleri
  4. İsteğe bağlı olarak, geçmiş modunu etkinleştirmek için Amazon Redshift'te aşağıdaki SQL komutunu çalıştırabilirsiniz: customer tablosu:
ALTER DATABASE "postgres" INTEGRATION SET HISTORY_MODE = TRUE FOR TABLE public.customer;

  1. İsteğe bağlı olarak, veritabanındaki tüm mevcut ve gelecekte oluşturulacak tablolar için geçmiş modunu etkinleştirebilirsiniz:
ALTER DATABASE "postgres" INTEGRATION SET HISTORY_MODE = TRUE FOR ALL TABLES;

  1. İsteğe bağlı olarak, bir veya daha fazla şemada tüm geçerli ve gelecekte oluşturulacak tablolar için geçmiş modunu etkinleştirebilirsiniz. Aşağıdaki sorgu, tüm geçerli ve gelecekte oluşturulacak tablolar için geçmiş modunu etkinleştirir. public şema:
ALTER DATABASE "postgres" INTEGRATION SET HISTORY_MODE = TRUE FOR ALL TABLES IN SCHEMA public;

  1. Aşağıdaki sorguyu çalıştırarak doğrulamayı yapın: customer tablo başarıyla geçmiş moduna değiştirildi is_history_mode sütun olarak true böylece kaynakta değiştirilen tüm kayıtların her sürümünü (güncellemeler ve silmeler dahil) izlemeye başlayabilir:
select is_history_mode, table_name, table_state, * from svv_integration_table_state;

Başlangıçta tablo şu şekilde olacak: ResyncInitiated değiştirmeden önceki durum Synced.
tablo-senkronize edildi

  1. Aşağıdaki sorguyu çalıştırın zetl Amazon Redshift hedefindeki kaynak kaydını değiştirmek ve geçmiş modunun davranışını gözlemlemek için Aurora PostgreSQL-Uyumlu veritabanı:
UPDATE customer
SET
    ca_suite_number = 'Suite 100',
    ca_street_number = '500',
    ca_street_name = 'Main',
    ca_street_type = 'St.',
    ca_city = 'New York',
    ca_county = 'Manhattan',
    ca_state = 'NY',
    ca_zip = '10001'
WHERE c_customer_id = 'AAAAAAAAAAAKNAAA';

  1. Şimdi aşağıdaki sorguyu çalıştırın postgres Aynı kaydın tüm sürümlerini görmek için Amazon Redshift veritabanına gidin:
SELECT   
    c_customer_id,
    ca_street_number,
    ca_street_name,
    ca_suite_number,
    ca_city,
    ca_county,
    ca_state,
    ca_zip,
    _record_is_active,
    _record_create_time,
    _record_delete_time
FROM postgres.public.customer
WHERE c_customer_id = 'AAAAAAAAAAAKNAAA';

Geçmiş moduyla sıfır ETL entegrasyonları eski kaydı devre dışı bıraktı _record_is_active sütun değeri false ve yeni bir kayıt oluşturdu _record_is_active as trueAyrıca, nasıl korunduğunu da görebilirsiniz. _record_create_time ve _record_delete_time Her iki kayıt için sütun değerleri. Etkin olmayan kayıt, etkin kaydın oluşturma zaman damgasıyla eşleşen bir silme zaman damgasına sahiptir.
tablo-geçmişi

SCD2 tablosuna artımlı veri yükleme

Amazon Redshift'in normal bir veritabanında (bu durumda dev) bir SCD2 tablosu oluşturmak ve artımlı veri yükleme işlemini uygulamak için aşağıdaki adımları tamamlayın:

  1. Boş bir müşteri SDC2 tablosu oluşturun customer_dim SCD alanlarıyla. Tabloda ayrıca DİST TARZI AUTO ve SIRALAMAN sütunlar _record_is_active, _record_create_time, ve _record_delete_time. Bir tabloda bir sıralama anahtarı tanımladığınızda, Amazon Redshift o sütun için tüm veri bloklarını okumayı atlayabilir. Bunu, her blokta depolanan minimum ve maksimum sütun değerlerini izlediği ve öngörü aralığına uygulanmayan blokları atlayabildiği için yapabilir.
CREATE TABLE dev.public.customer_dim (
    c_customer_sk bigint NOT NULL DEFAULT 0 ENCODE raw distkey,
    c_customer_id character varying(19) DEFAULT '' :: character varying ENCODE lzo,
    c_salutation character varying(12) ENCODE bytedict,
    c_first_name character varying(24) ENCODE lzo,
    c_last_name character varying(36) ENCODE lzo,
    c_preferred_cust_flag character varying(1) ENCODE lzo,
    c_birth_day integer ENCODE az64,
    c_birth_month integer ENCODE az64,
    c_birth_year integer ENCODE az64,
    c_birth_country character varying(24) ENCODE bytedict,
    c_login character varying(15) ENCODE lzo,
    c_email_address character varying(60) ENCODE lzo,
    ca_street_number character varying(12) ENCODE lzo,
    ca_street_name character varying(72) ENCODE lzo,
    ca_street_type character varying(18) ENCODE bytedict,
    ca_suite_number character varying(12) ENCODE bytedict,
    ca_city character varying(72) ENCODE lzo,
    ca_county character varying(36) ENCODE lzo,
    ca_state character varying(2) ENCODE lzo,
    ca_zip character varying(12) ENCODE lzo,
    ca_country character varying(24) ENCODE lzo,
    ca_gmt_offset numeric(5, 2) ENCODE az64,
    ca_location_type character varying(24) ENCODE bytedict,
    _record_is_active boolean ENCODE raw,
    _record_create_time timestamp without time zone ENCODE az64,
    _record_delete_time timestamp without time zone ENCODE az64,
    PRIMARY KEY (c_customer_sk)
) SORTKEY (
    _record_is_active,
    _record_create_time,
    _record_delete_time
);

Daha sonra, adı verilen bir saklı yordam oluşturursunuz. SP_Customer_Type2_SCD() artımlı verileri doldurmak için customer_dim Önceki adımda oluşturulan SCD2 tablosu. Saklı yordam aşağıdaki bileşenleri içerir:

    • İlk olarak, maksimum değeri getirir _record_create_time ve maksimum _record_delete_time her biri için customer_id.
    • Daha sonra, önceki adımın çıktısını, boyut tablosunda maksimum oluşturma süresinden sonra oluşturulan kayıtlar veya çoğaltılmış tablodaki kayıtlar için devam eden sıfır ETL entegrasyonu çoğaltılmış tablosuyla karşılaştırır. _record_delete_time maksimumdan sonra _record_delete_time her birinin boyut tablosunda customer_id.
    • Önceki adımın çıktısı, çoğaltılmış veriler arasındaki değiştirilen verileri yakalar. customer tablo ve hedef customer_dim boyut tablosu. Geçici veriler bir customer_stg Hedef tablo ile birleştirilmeye hazır tablo.
    • Birleştirme işlemi sırasında silinmesi gereken kayıtlar şu şekilde işaretlenir: _record_delete_time ve _record_is_active ayarlandı false, yeni oluşturulan kayıtlar hedef tabloya eklenirken customer_dim ile _record_is_active as true.
  1. Saklı yordamı aşağıdaki kodla oluşturun:
CREATE OR REPLACE PROCEDURE public.sp_customer_type2_scd()
LANGUAGE plpgsql
AS $$
    BEGIN

    DROP TABLE IF EXISTS cust_latest;

    -- Create temp table with latest record timestamps
         CREATE TEMP TABLE cust_latest DISTKEY (c_customer_id) 
    AS
        SELECT
            c_customer_id,
            max(_record_create_time) AS _record_create_time,
            max(_record_delete_time) AS _record_delete_time
        FROM customer_dim 
        GROUP BY c_customer_id;
    
    DROP TABLE IF EXISTS customer_stg;

    -- Identify and stage changed records
    CREATE TEMP TABLE customer_stg 
    AS           
    SELECT
            ABS(fnv_hash(cust.c_customer_id)) as customer_sk,
            cust.*
            FROM
                postgres.public.customer cust
LEFT OUTER JOIN cust_latest ON cust.c_customer_id = cust_latest.c_customer_id
WHERE (cust._record_create_time > NVL(cust_latest._record_create_time, '1099-01-01 01:01:01') AND cust._record_is_active is true)
OR (cust._record_delete_time > NVL(cust_latest._record_delete_time, '1099-01-01 01:01:01') AND cust._record_is_active is false);

    -- Merge changes to customer dimension table
    MERGE INTO public.customer_dim 
    USING customer_stg stg 
    ON customer_dim.c_customer_id = stg.c_customer_id
        AND customer_dim._record_is_active = TRUE
        AND stg._record_is_active = false
    WHEN MATCHED THEN
        UPDATE
        SET
            _record_is_active = stg._record_is_active,
            _record_create_time = stg._record_create_time,
            _record_delete_time = stg._record_delete_time
    WHEN NOT MATCHED THEN
        INSERT
        VALUES
            (
                stg.customer_sk,
                stg.c_customer_id,
                stg.c_salutation,
                stg.c_first_name,
                stg.c_last_name,
                stg.c_preferred_cust_flag,
                stg.c_birth_day,
                 	     stg.c_birth_month,
                stg.c_birth_year,
                stg.c_birth_country,
                stg.c_login,
                stg.c_email_address,
                stg.ca_street_number,
                stg.ca_street_name,
                stg.ca_street_type,
                stg.ca_suite_number,
                stg.ca_city,
                stg.ca_county,
                stg.ca_state,
                stg.ca_zip,
                stg.ca_country,
                stg.ca_gmt_offset,
                stg.ca_location_type,
                stg._record_is_active,
                stg._record_create_time,
                stg._record_delete_time
            );

    END;
    $$

  1. İlk ve devam eden artımlı verileri yüklemek için depolanan prosedürü çalıştırın ve zamanlayın customer_dim SCD2 tablosu:
CALL SP_Customer_Type2_SCD();

  1. Verileri doğrulayın customer_dim aynı müşteri için adresi değiştirilmiş masa:
SELECT
    c_customer_id,
    ca_street_number,
    ca_street_name,
    ca_suite_number,
    ca_city,
    ca_county,
    ca_state,
    ca_zip,
    _record_is_active,
    _record_create_time,
    _record_delete_time
FROM customer_dim
WHERE c_customer_id = 'AAAAAAAAAAAKNAAA';

loş-tarih

Müşteri SCD2 tablosu için artımlı yükleme stratejisini başarıyla uyguladınız. Bundan sonra, müşterideki tüm değişiklikler, saklı yordam çalıştırılarak bu müşteri boyut tablosunda izlenecek ve korunacaktır. Bu, örneğin müşteri geçiş analizi gerçekleştirip coğrafi hareketlerin satın alma davranışını nasıl etkilediğini görmek veya hedeflenen pazarlama kampanyalarının kampanya yürütme anında müşteri demografisi üzerindeki etkisini analiz etmek için pazarlama kampanyası etkinliği gibi çeşitli kullanım durumları için müşteri verilerini istediğiniz bir zaman noktasında analiz etmenizi sağlar.

Geçmiş modu için endüstri kullanım örnekleri

Operasyonel veri depoları ile Amazon Redshift arasındaki geçmiş modu tarafından etkinleştirilen diğer sektör kullanım örnekleri şunlardır:

  • Mali denetim veya düzenleyici uyumluluk – Uyumluluk ve denetim gerekliliklerini desteklemek için zaman içinde finansal kayıtlardaki değişiklikleri izleyin. Geçmiş modu, denetçilerin finansal verilerin durumunu herhangi bir zamanda yeniden oluşturmasına olanak tanır; bu da soruşturmalar ve düzenleyici raporlama için çok önemlidir.
  • Müşteri yolculuğu analizi – Müşteri verilerinin davranış kalıpları ve tercihleri ​​hakkında içgörüler elde etmek için nasıl evrildiğini anlayın. Pazarlamacılar, müşteri profillerinin zaman içinde nasıl değiştiğini analiz ederek kişiselleştirme stratejileri ve yaşam boyu değer hesaplamaları hakkında bilgi sağlayabilir.
  • Tedarik zinciri optimizasyonu – Trendleri belirlemek ve stok seviyelerini optimize etmek için geçmiş envanter ve sipariş verilerini analiz edin. Tedarik zinciri yöneticileri, talep modellerinin zaman içinde nasıl değiştiğini inceleyerek tahmin doğruluğunu artırabilir.
  • İK analizi – Daha iyi iş gücü planlaması ve performans analizi için zaman içinde çalışan verilerindeki değişiklikleri izleyin. İK profesyonelleri, kuruluş genelinde kariyer ilerlemesini, maaş değişikliklerini ve beceri geliştirme eğilimlerini analiz edebilir.
  • Makine öğrenimi modeli denetimi – Veri bilimcileri, modelleri eğitmek, doğruluğu artırmak için tahminleri gerçeklerle karşılaştırmak, model davranışını açıklamak ve zaman içindeki olası önyargıları belirlemek için geçmiş verileri kullanabilirler.
  • Misafirperverlik ve havayolu endüstrisi kullanım örnekleri - Örneğin:
    • Müşteri Hizmetleri – Müşteri sorgularına hızlı bir şekilde yanıt vermek, hizmet kalitesini ve müşteri memnuniyetini artırmak için geçmiş rezervasyon verilerine erişin.
    • Mürettebat planlaması – Sendika sözleşmelerine uymaya, olumlu işçi ilişkilerini sürdürmeye ve iş gücü yönetimini optimize etmeye yardımcı olmak için mürettebat programı değişikliklerini takip edin.
    • Veri bilimi uygulamaları – Farklı zaman dilimlerinden birden fazla senaryoda modelleri eğitmek için geçmiş verileri kullanın. Havaalanı kapısı yönetimi, uçuş önceliklendirmesi ve mürettebat planlama optimizasyonu gibi önemli operasyonlar için model doğruluğunu iyileştirmek amacıyla tahminleri gerçeklerle karşılaştırın.

En iyi uygulamalar

İhtiyacınız etkin ve etkin olmayan kayıtları ayırmaksa, şunu kullanabilirsiniz: _record_is_active ilk sıralama anahtarı olarak. Geçmişte belirli bir tarihe ait verileri analiz etmek istediğiniz diğer desenler için, verilerin aktif or pasif, _record_create_time ve _record_delete_time Sıralama anahtarı olarak eklenebilir.

Geçmiş modu kayıt sürümlerini korur, bu da Amazon Redshift'te tablo boyutunu artıracak ve sorgu performansını etkileyebilecektir. Bu nedenle, güncel olmayan kayıt sürümleri için düzenli olarak DML silmeleri gerçekleştirin (analiz için gerekli değilse belirli bir zaman diliminden sonra verileri silin). Bu silmeleri gerçekleştirirken, tüm ilgili tablolarda silerek veri bütünlüğünü koruyun. Sürümlemesi artık gerekli olmayan kayıtlarda DML silmeleri gerçekleştirdiğinizde de vakumlama gerekli hale gelir. Otomatik vakumlama silme verimliliğini artırmak için, Amazon Redshift otomatik vakumlama silme, toplu silmelerde çalışırken daha verimlidir. Vakumlama ilerlemesini şu şekilde izleyebilirsiniz: SYS_VACUUM_HISTORY tablo.

Temizlemek

Kaynaklarınızı temizlemek için aşağıdaki adımları tamamlayın:

  1. Aurora PostgreSQL kümesini silin.
  2. Redshift kümesini silin.
  3. EC2 örneğini silin.

Sonuç

Sıfır ETL entegrasyonları, veri entegrasyonunu basitleştirme ve neredeyse gerçek zamanlı analitiği etkinleştirme konusunda önemli adımlar attı. Geçmiş modunun eklenmesiyle AWS, verilerinizden değer elde etmeniz için size daha da güçlü araçlar sunarak yenilik yapmaya devam ediyor.

İşletmeler giderek daha fazla veri odaklı karar almaya güvendikçe, geçmiş moduyla sıfır ETL, dijital ekonomide rekabet avantajını sürdürmede kritik öneme sahip olacak. Bu gelişmeler yalnızca veri süreçlerini kolaylaştırmakla kalmıyor, aynı zamanda analiz ve içgörü oluşturma için yeni yollar açıyor.

Geçmiş moduyla sıfır ETL entegrasyonu hakkında daha fazla bilgi edinmek için bkz. Sıfır ETL entegrasyonları ve Sınırlamalar. AWS'de sıfır ETL ile başlayın ücretsiz hesap oluşturma bugün!


Yazarlar Hakkında

Raks KhareRaks Khare Pennsylvania merkezli AWS'de Kıdemli Analitik Uzmanı Çözüm Mimarıdır. Çeşitli sektörlerdeki ve bölgelerdeki müşterilerin AWS platformunda geniş ölçekte veri analizi çözümleri oluşturmasına yardımcı oluyor. İş dışında yeni seyahat ve yemek mekanlarını keşfetmeyi ve ailesiyle kaliteli zaman geçirmeyi seviyor.

Jyoti Aggarwal AWS Zero-ETL'nin Ürün Yönetimi Lideridir. Performans, müşteri deneyimi ve güvenlikle ilgili girişimlerin desteklenmesi de dahil olmak üzere ürün ve iş stratejisine liderlik ediyor. Bulut bilişim, veri işlem hatları, analitik, yapay zeka (AI) ve veritabanları, veri ambarları ve veri gölleri dahil veri hizmetleri konularında uzmanlığını beraberinde getiriyor.

Gopal Palival Amazon Redshift'te Baş Mühendis olarak görev yapıyor ve Amazon Redshift için ZeroETL girişimlerinin yazılım geliştirme süreçlerine liderlik ediyor.

Harman Nagra San Francisco'da bulunan AWS'de Baş Çözüm Mimarıdır. Küresel finansal hizmetler kuruluşlarıyla birlikte AWS'deki iş yüklerini tasarlamak, geliştirmek ve optimize etmek için çalışır.

Sumanth Punyamurthula Amazon Web Services'ta Kıdemli Veri ve Analitik Mimarı olup, seyahat, konaklama, finans ve sağlık sektörlerinde analitik, veri ambarı, veri gölleri, veri yönetimi, güvenlik ve bulut altyapısı gibi büyük analitik girişimlere liderlik etme konusunda 20 yılı aşkın deneyime sahiptir.

İlgili Makaleler

spot_img

Son Makaleler

spot_img