Alıştırma - Eşleme veri akışlarıyla yavaş değişen bir Tür 1 boyutu tasarlama ve uygulama
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.
Synapse Studio'dan Veri hub'ına gidin.
Ç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.
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ın
F5
: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 )
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.
Geliştirme hub'ına gidin.
öğesini ve +ardından Veri akışı'yı seçin.
Yeni veri akışının özellikler bölmesinde Ad alanına (1) girin
UpdateCustomerDimension
ve özellikler bölmesini gizlemek için Özellikler düğmesini (2) seçin.Tuvalde Kaynak Ekle'yi seçin.
altında
Source settings
aş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
- Çıkış akışı adı: Enter
Yeni tümleştirme veri kümesi iletişim kutusunda Azure Synapse Analytics'i ve ardından Devam'ı seçin.
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
- Ad: Enter
Değer alanına SQL Havuzu adınızı girin ve Tamam'ı seçin.
dbo.CustomerSource
Tablo adı'nın altında Şemayı içeri aktar'ı veFrom connection/store
ardından Tamam'ı seçerek veri kümesini oluşturun.Eklediğiniz veri kümesinin yanındaki Aç'ı
CustomerSource
seçin.YANıNDAKI Değer alanına
DBName
SQL Havuzu adınızıgirin.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.
- Çıkış akışı adı: Enter
Veri akışına dönüşüm ekleme
+ Tuvaldeki kaynağın sağındaki
SourceDB
Türetilmiş Sütun'a tıklayın.altında
Derived column's settings
aş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 nulliifNull
değerleri boş dizelerle değiştirir. Aksi takdirde, null girdiler mevcut olduğunda karma değerleri yinelenir.- Çıkış akışı adı: Enter
+ Tuvaldeki türetilmiş sütunun
CreateCustomerHash
sağındaki Var'ı seçin.altında
Exists settings
aş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
- Çıkış akışı adı: Enter
Tuvalin sağındaki
Exists
öğesini ve + ardından Ara'yı seçin.altında
Lookup settings
aş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
- Çıkış akışı adı: Enter
+ Tuvalin sağındaki
LookupCustomerID
Türetilmiş Sütun'a tıklayın.altında
Derived column's settings
aş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 belirleyiniif(isNull(InsertedDate), currentTimestamp(), {InsertedDate})
InsertedDate
Değer null ise geçerli zaman damgasını ekleyin. Aksi takdirde değerini kullanınInsertedDate
.ModifiedDate
seçeneğini belirleyincurrentTimestamp()
Değeri her zaman geçerli zaman damgasıyla güncelleştirin ModifiedDate
.Dekont
İkinci sütunu eklemek için Sütunlar listesinin üzerinde + Ekle'yi ve ardından Sütun ekle'yi seçin.
- Çıkış akışı adı: Enter
+ Tuvaldeki türetilmiş sütun adımının
SetDates
sağındaki Satırı Değiştir'i seçin.altında
Alter row settings
aş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 belirleyintrue()
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.- Çıkış akışı adı: Enter
+ Tuvaldeki değiştirme satırı adımının
AllowUpserts
sağındaki Havuz'a tıklayın.altında
Sink
aş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ınValidate schema
- Çıkış akışı adı: Enter
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 columns
ardından listeden öğesini seçinCustomerID
- Tablo eylemi: Seç
None
- Hazırlamayı etkinleştir: İşaretsiz
- Güncelleştirme yöntemi: Diğer tüm seçenekleri denetleyin
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
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.
Yayımla öğesini seçin.
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
.
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.
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.