Alıştırma - Eşleme veri akışlarıyla yavaş değişen bir Tür 1 boyutu tasarlama ve uygulama

Tamamlandı

Bu alıştırmada, kaynak ve hedef olarak Azure Synapse ayrılmış SQL havuzunu kullanarak Tür 1 SCD için bir Veri akışı oluşturacaksınız. Bu veri akışı daha sonra synapse işlem hattına eklenebilir ve ayıklama, dönüştürme, yükleme (ETL) işleminin bir parçası olarak çalıştırılabilir.

Kaynak ve boyut tablosunu ayarlama

Bu alıştırmada, Azure SQL, Azure depolama gibi birçok farklı sistem türünden olabilecek kaynak verilerden Azure Synapse'te bir boyut tablosu yüklemek istiyorsunuz. Bu örnekte, Azure Synapse veritabanınızda kaynak verileri oluşturarak basit tutabilirsiniz.

  1. Synapse Studio'dan Veri hub'ına gidin.

    Data hub.

  2. Çalışma Alanı sekmesini (1) seçin, Veritabanları'nı genişletin, ardından SQLPool01 (2) öğesine sağ tıklayın. Yeni SQL betiği (3)'i ve ardından Boş betik (4) öğesini seçin.

    The data hub is displayed with the context menus to create a new SQL script.

  3. Aşağıdaki betiği boş betik penceresine yapıştırın, ardından Sorguyu yürütmek için Çalıştır'ı seçin veya tuşuna basınF5:

    CREATE TABLE [dbo].[CustomerSource] (
        [CustomerID] [int] NOT NULL,
        [Title] [nvarchar](8),
        [FirstName] [nvarchar](50),
        [MiddleName] [nvarchar](50),
        [LastName] [nvarchar](50),
        [Suffix] [nvarchar](10),
        [CompanyName] [nvarchar](128),
        [SalesPerson] [nvarchar](256),
        [EmailAddress] [nvarchar](50),
        [Phone] [nvarchar](25)
    ) WITH ( HEAP )
    
    COPY INTO [dbo].[CustomerSource]
    FROM 'https://solliancepublicdata.blob.core.windows.net/dataengineering/dp-203/awdata/CustomerSource.csv'
    WITH (
        FILE_TYPE='CSV',
        FIELDTERMINATOR='|',
        FIELDQUOTE='',
        ROWTERMINATOR='0x0a',
        ENCODING = 'UTF16'
    )
    
    CREATE TABLE dbo.[DimCustomer](
        [CustomerID] [int] NOT NULL,
        [Title] [nvarchar](8) NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [MiddleName] [nvarchar](50) NULL,
        [LastName] [nvarchar](50) NOT NULL,
        [Suffix] [nvarchar](10) NULL,
        [CompanyName] [nvarchar](128) NULL,
        [SalesPerson] [nvarchar](256) NULL,
        [EmailAddress] [nvarchar](50) NULL,
        [Phone] [nvarchar](25) NULL,
        [InsertedDate] [datetime] NOT NULL,
        [ModifiedDate] [datetime] NOT NULL,
        [HashKey] [char](64)
    )
    WITH
    (
        DISTRIBUTION = REPLICATE,
        CLUSTERED COLUMNSTORE INDEX
    )
    

    The script and Run button are both highlighted.

Eşleme veri akışı oluşturma

Eşleme Veri akışları, kod içermeyen bir deneyim aracılığıyla verilerin nasıl dönüştürüleceğini belirtmenin görsel bir yolunu sağlayan işlem hattı etkinlikleridir. Daha sonra Bir Tür 1 SCD oluşturmak için bir eşleme veri akışı oluşturacaksınız.

  1. Geliştirme hub'ına gidin.

    Develop hub.

  2. öğesini ve +ardından Veri akışı'yı seçin.

    The plus button and data flow menu item are highlighted.

  3. Yeni veri akışının özellikler bölmesinde Ad alanına (1) girin UpdateCustomerDimensionve özellikler bölmesini gizlemek için Özellikler düğmesini (2) seçin.

    The data flow properties pane is displayed.

  4. Tuvalde Kaynak Ekle'yi seçin.

    The Add Source button is highlighted on the data flow canvas.

  5. altında Source settingsaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter SourceDB
    • Kaynak türü: Seç Dataset
    • Seçenekler: Diğer seçenekleri işaretleyin Allow schema drift ve işaretsiz bırakın
    • Örnekleme: Disable
    • Veri kümesi: Yeni veri kümesi oluşturmak için + Yeni'yi seçin

    The New button is highlighted next to Dataset.

  6. Yeni tümleştirme veri kümesi iletişim kutusunda Azure Synapse Analytics'i ve ardından Devam'ı seçin.

    Azure SQL Database and the Continue button are highlighted.

  7. Veri kümesi özelliklerinde aşağıdakileri yapılandırın:

    • Ad: Enter CustomerSource
    • Bağlı hizmet: Synapse çalışma alanı bağlı hizmetini seçin
    • Tablo adı: Açılan menüdeki Yenile düğmesini seçin

    The form is configured as described and the refresh button is highlighted.

  8. Değer alanına SQL Havuzu adınızı girin ve Tamam'ı seçin.

    The SQLPool01 parameter is highlighted.

  9. dbo.CustomerSource Tablo adı'nın altında Şemayı içeri aktar'ı ve From connection/store ardından Tamam'ı seçerek veri kümesini oluşturun.

    The form is completed as described.

  10. Eklediğiniz veri kümesinin yanındaki Aç'ıCustomerSource seçin.

    The open button is highlighted next to the new dataset.

  11. YANıNDAKI Değer alanına DBNameSQL Havuzu adınızıgirin.

  12. Veri akışı düzenleyicisinde SourceDB etkinliğinin altındaki Kaynak Ekle kutusunu seçin. CustomerSource için kullanılan adımları izleyerek bu kaynağı DimCustomer tablosu olarak yapılandırın.

    • Çıkış akışı adı: Enter DimCustomer
    • Kaynak türü: Seç Dataset
    • Seçenekler: Diğer seçenekleri işaretleyin Allow schema drift ve işaretsiz bırakın
    • Örnekleme: Disable
    • Veri kümesi: Yeni bir veri kümesi oluşturmak için + Yeni'yi seçin. Azure Synapse bağlı hizmetini kullanın ve DimCustomer tablosunu seçin. DBName değerini SQL Havuzu adınıza ayarladığınızdan emin olun.

    The Add Source, Output stream name, and Dataset name are highlighted in the Source settings.

Veri akışına dönüşüm ekleme

  1. + Tuvaldeki kaynağın sağındaki SourceDB Türetilmiş Sütun'a tıklayın.

    The plus button and derived column menu item are highlighted.

  2. altında Derived column's settingsaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter CreateCustomerHash
    • Gelen akış: SourceDB
    • Sütunlar: Aşağıdakileri girin:
    Column Expression Açıklama
    Şunu yazın: HashKey sha2(256, iifNull(Title,'') +FirstName +iifNull(MiddleName,'') +LastName +iifNull(Suffix,'') +iifNull(CompanyName,'') +iifNull(SalesPerson,'') +iifNull(EmailAddress,'') +iifNull(Phone,'')) Tablo değerlerinin SHA256 karması oluşturur. Gelen kayıtların karması ile hedef kayıtların karma değerini karşılaştırarak satır değişikliklerini algılamak ve değerle eşleştirmek CustomerID için bunu kullanırız. işlevi null iifNull değerleri boş dizelerle değiştirir. Aksi takdirde, null girdiler mevcut olduğunda karma değerleri yinelenir.

    The Derived column's settings form is configured as described.

  3. + Tuvaldeki türetilmiş sütunun CreateCustomerHash sağındaki Var'ı seçin.

    The plus button and exists menu item are both highlighted.

  4. altında Exists settingsaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter Exists
    • Sol akış: CreateCustomerHash
    • Sağ akış: SynapseDimCustomer
    • Varoluş türü: Seç Doesn't exist
    • Mevcut koşullar: Sol ve Sağ için aşağıdakileri ayarlayın:
    Sol: CreateCustomerHash sütunu Sağ: SynapseDimCustomer sütunu
    HashKey HashKey

    The Exists settings form is configured as described.

  5. Tuvalin sağındaki Exists öğesini ve + ardından Ara'yı seçin.

    The plus button and lookup menu item are both highlighted.

  6. altında Lookup settingsaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter LookupCustomerID
    • Birincil akış: Exists
    • Arama akışı: SynapseDimCustomer
    • Birden çok satırı eşleştirme: İşaretsiz
    • Eşleşme tarihi: Any row
    • Arama koşulları: Sol ve Sağ için aşağıdakileri ayarlayın:
    Sol: Var olan sütun Sağ: SynapseDimCustomer sütunu
    CustomerID CustomerID

    The Lookup settings form is configured as described.

  7. + Tuvalin sağındaki LookupCustomerID Türetilmiş Sütun'a tıklayın.

    The plus button and derived column menu item are both highlighted.

  8. altında Derived column's settingsaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter SetDates
    • Gelen akış: LookupCustomerID
    • Sütunlar: Aşağıdakileri girin:
    Column Expression Açıklama
    InsertedDate seçeneğini belirleyin iif(isNull(InsertedDate), currentTimestamp(), {InsertedDate}) InsertedDate Değer null ise geçerli zaman damgasını ekleyin. Aksi takdirde değerini kullanın InsertedDate .
    ModifiedDate seçeneğini belirleyin currentTimestamp() Değeri her zaman geçerli zaman damgasıyla güncelleştirin ModifiedDate .

    Another Derived column's settings form is configured as described.

    Dekont

    İkinci sütunu eklemek için Sütunlar listesinin üzerinde + Ekle'yi ve ardından Sütun ekle'yi seçin.

  9. + Tuvaldeki türetilmiş sütun adımının SetDates sağındaki Satırı Değiştir'i seçin.

    The plus button and alter row menu item are both highlighted.

  10. altında Alter row settingsaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter AllowUpserts
    • Gelen akış: SetDates
    • Satır koşullarını değiştirme: Aşağıdakileri girin:
    Koşul Expression Açıklama
    Upsert if seçeneğini belirleyin true() Upserts'e true()Upsert if izin vermek için koşulu koşul olarak ayarlayın. Bu, eşleme veri akışındaki adımlardan geçen tüm verilerin havuza eklenmesini veya güncelleştirilmesini sağlar.

    The alter row settings form is configured as described.

  11. + Tuvaldeki değiştirme satırı adımının AllowUpserts sağındaki Havuz'a tıklayın.

    The plus button and sink menu item are both highlighted.

  12. altında Sinkaşağıdaki özellikleri yapılandırın:

    • Çıkış akışı adı: Enter Sink
    • Gelen akış: AllowUpserts
    • Havuz türü: Dataset
    • Veri kümesi: DimCustomer
    • Seçenekler: Onay kutusunu işaretleyin Allow schema drift ve işaretini kaldırın Validate schema

    The sink properties form is configured as described.

  13. Ayarlar sekmesini seçin ve aşağıdaki özellikleri yapılandırın:

    • Güncelleştirme yöntemi: Diğer tüm seçenekleri denetleyin Allow upsert ve işaretini kaldırın
    • Anahtar sütunlar: öğesini ve List of columnsardından listeden öğesini seçin CustomerID
    • Tablo eylemi: Seç None
    • Hazırlamayı etkinleştir: İşaretsiz

    The sink settings are configured as described.

  14. Eşleme sekmesini seçin ve ardından Otomatik eşleme'nin işaretini kaldırın. Giriş sütunları eşlemesini aşağıda özetlenen şekilde yapılandırın:

    Giriş sütunları Çıkış sütunları
    SourceDB@CustomerID CustomerID
    SourceDB@Title Title
    SourceDB@FirstName FirstName
    SourceDB@MiddleName MiddleName
    SourceDB@LastName LastName
    SourceDB@Suffix Suffix
    SourceDB@CompanyName CompanyName
    SourceDB@SalesPerson SalesPerson
    SourceDB@EmailAddress EmailAddress
    SourceDB@Phone Phone
    InsertedDate InsertedDate
    ModifiedDate ModifiedDate
    CreateCustomerHash@HashKey HashKey

    Mapping settings are configured as described.

  15. Tamamlanan eşleme akışı aşağıdaki gibi görünmelidir. Değişikliklerinizi kaydetmek için Tümünü yayımla'yı seçin.

    The completed data flow is displayed and Publish all is highlighted.

  16. Yayımla öğesini seçin.

    The publish button is highlighted.

Veri akışını test etme

Tür 1 SCD veri akışını tamamladınız. Test etmeyi seçerseniz bu veri akışını bir Synapse tümleştirme işlem hattına ekleyebilirsiniz. Ardından DimCustomer hedefine müşteri kaynak verilerinin ilk yükünü gerçekleştirmek için işlem hattını bir kez çalıştırabilirsiniz.

İşlem hattının her ek çalıştırması, kaynak tablodaki verileri boyut tablosundakilerle karşılaştırır (HashKey kullanarak) ve yalnızca değişen kayıtları güncelleştirir. Bunu test etmek için kaynak tablodaki bir kaydı güncelleştirebilir, ardından işlem hattını yeniden çalıştırabilir ve boyut tablosundaki kayıt güncelleştirmelerini doğrulayabilirsiniz.

Müşteri Janet Gates'i örnek alın. İlk yük Gates ve 4 olduğunu CustomerId gösterirLastName.

The script is displayed with the initial customer record.

Aşağıda, kaynak tablodaki müşteri soyadını güncelleştiren bir örnek deyim verilmiştir.

UPDATE [dbo].[CustomerSource]
SET LastName = 'Lopez'
WHERE [CustomerId] = 4

Kaydı güncelleştirdikten ve işlem hattını yeniden çalıştırdıktan sonra DimCustomer bu güncelleştirilmiş verileri gösterir.

The script is displayed with the updated customer record.

Müşteri kaydı, değeri kaynak kayıtla eşleşecek şekilde başarıyla güncelleştirdi LastName ve eski LastName değeri izlemeden değerini güncelleştirdiModifiedDate. Bu, Tür 1 SCD için beklenen davranıştır. Alan için LastName geçmiş gerekliyse, tabloyu ve veri akışını öğrendiğiniz diğer SCD türlerinden biri olacak şekilde değiştirirsiniz.