Denetim tablosu içeren bir veritabanından delta kopyası
UYGULANANLAR: Azure Data Factory Azure Synapse Analytics
İpucu
Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!
Bu makalede, yüksek filigran değerini depolayan bir dış denetim tablosu kullanarak veritabanı tablosundan Azure'a artımlı olarak yeni veya güncelleştirilmiş satırları yüklemek için kullanılabilecek bir şablon açıklanmaktadır.
Bu şablon, kaynak veritabanının şemasının yeni veya güncelleştirilmiş satırları tanımlamak için bir zaman damgası sütunu veya artımlı anahtar içermesini gerektirir.
Not
Kaynak veritabanınızda yeni veya güncelleştirilmiş satırları tanımlamak için bir zaman damgası sütununuz varsa ancak değişiklik kopyalama için kullanılacak bir dış denetim tablosu oluşturmak istemiyorsanız, bunun yerine azure data factory veri kopyalama aracını kullanarak işlem hattı alabilirsiniz. Bu araç, kaynak veritabanındaki yeni satırları okumak için değişken olarak tetikleyiciyle zamanlanmış bir zaman kullanır.
Bu çözüm şablonu hakkında
Bu şablon önce eski filigran değerini alır ve geçerli filigran değeriyle karşılaştırır. Bundan sonra, iki filigran değeri arasındaki karşılaştırmaya göre yalnızca kaynak veritabanındaki değişiklikleri kopyalar. Son olarak, yeni yüksek filigran değerini bir sonraki sefer delta veri yüklemesi için bir dış denetim tablosuna depolar.
Şablon dört etkinlik içerir:
- Arama , dış denetim tablosunda depolanan eski yüksek filigran değerini alır.
- Başka bir Arama etkinliği, kaynak veritabanından geçerli yüksek filigran değerini alır.
- Yalnızca kaynak veritabanındaki değişiklikleri hedef depoya kopyalar . Kaynak veritabanındaki değişiklikleri tanımlayan sorgu, 'SELECT * FROM Data_Source_Table WHERE TIMESTAMP_Column > "son yüksek filigran" ve TIMESTAMP_Column <= "geçerli üst filigran" ile benzerdir.
- SqlServerStoredProcedure , bir dahaki sefere değişiklik kopyası için geçerli yüksek filigran değerini bir dış denetim tablosuna yazar.
Şablon aşağıdaki parametreleri tanımlar:
- Data_Source_Table_Name, kaynak veritabanındaki veri yüklemek istediğiniz tablodur.
- Data_Source_WaterMarkColumn, kaynak tablodaki yeni veya güncelleştirilmiş satırları tanımlamak için kullanılan sütunun adıdır. Bu sütunun türü genellikle datetime, INT veya benzeridir.
- Data_Destination_Container, hedef deponuzda verilerin kopyalandığı yerin kök yoludur.
- Data_Destination_Directory, hedef deponuzda verilerin kopyalandığı yerin kökünün altındaki dizin yoludur.
- Data_Destination_Table_Name, verilerin hedef deponuzda kopyalandığı yerdir (Veri Hedefi olarak "Azure Synapse Analytics" seçildiğinde geçerlidir).
- Data_Destination_Folder_Path, verilerin hedef deponuzda kopyalandığı yerdir (Veri Hedefi olarak "Dosya Sistemi" veya "Azure Data Lake Storage 1. Nesil" seçildiğinde geçerlidir).
- Control_Table_Table_Name, yüksek filigran değerini depolayan dış denetim tablosudur.
- Control_Table_Column_Name, dış denetim tablosundaki yüksek filigran değerini depolayan sütundur.
Bu çözüm şablonunu kullanma
Yüklemek istediğiniz kaynak tabloyu keşfedin ve yeni veya güncelleştirilmiş satırları tanımlamak için kullanılabilecek yüksek filigran sütununu tanımlayın. Bu sütunun türü datetime, INT veya benzeri olabilir. Yeni satırlar eklendikçe bu sütunun değeri artar. Aşağıdaki örnek kaynak tablodan (data_source_table), LastModifytime sütununu üst filigran sütunu olarak kullanabiliriz.
PersonID Name LastModifytime 1 aaaa 2017-09-01 00:56:00.000 2 bbbb 2017-09-02 05:23:00.000 3 cccc 2017-09-03 02:36:00.000 4 dddd 2017-09-04 03:21:00.000 5 eeee 2017-09-05 08:06:00.000 6 fffffff 2017-09-06 02:23:00.000 7 gggg 2017-09-07 09:01:00.000 8 hhhh 2017-09-08 09:01:00.000 9 iiiiiiiii 2017-09-09 09:01:00.000
Sql Server'da veya Azure SQL Veritabanı delta veri yükleme için yüksek filigran değerini depolamak üzere bir denetim tablosu oluşturun. Aşağıdaki örnekte, denetim tablosunun adı filigran şeklindedir. Bu tabloda WatermarkValue, yüksek filigran değerini depolayan sütundur ve türü datetime'dır.
create table watermarktable ( WatermarkValue datetime, ); INSERT INTO watermarktable VALUES ('1/1/2010 12:00:00 AM')
Denetim tablosunu oluşturmak için kullandığınız SQL Server veya Azure SQL Veritabanı örneğinde bir saklı yordam oluşturun. Saklı yordam, yeni yüksek filigran değerini dış denetim tablosuna gelecek sefer delta veri yüklemesi için yazmak için kullanılır.
CREATE PROCEDURE update_watermark @LastModifiedtime datetime AS BEGIN UPDATE watermarktable SET [WatermarkValue] = @LastModifiedtime END
Veritabanı şablonundan Delta kopyasına gidin. Veri kopyalamak istediğiniz kaynak veritabanına yeni bir bağlantı oluşturun.
Verileri kopyalamak istediğiniz hedef veri deposuna yeni bir bağlantı oluşturun.
2. ve 3. adımlarda oluşturduğunuz dış denetim tablosuna ve saklı yordama yeni bir bağlantı oluşturun.
Bu şablonu kullan'ı seçin.
Aşağıdaki örnekte gösterildiği gibi kullanılabilir işlem hattını görürsünüz:
Saklı Yordam'ı seçin. Saklı yordam adı için [dbo].[ öğesini seçin update_watermark]. Parametreyi içeri aktar'ı ve ardından Dinamik içerik ekle'yi seçin.
@{activity('LookupCurrentWaterMark').output.firstRow.NewWatermarkValue} içeriğini yazın ve Son'u seçin.
Hata Ayıkla'yı seçin, Parametreler'i girin ve son'u seçin.
Aşağıdaki örneğe benzer sonuçlar görüntülenir:
Kaynak tablonuzda yeni satırlar oluşturabilirsiniz. Yeni satırlar oluşturmak için örnek SQL dili aşağıda verilmiştir:
INSERT INTO data_source_table VALUES (10, 'newdata','9/10/2017 2:23:00 AM') INSERT INTO data_source_table VALUES (11, 'newdata','9/11/2017 9:01:00 AM')
İşlem hattını yeniden çalıştırmak için Hata Ayıkla'yı seçin, Parametreler'i girin ve son'u seçin.
Hedefe yalnızca yeni satırların kopyalandığını göreceksiniz.
(İsteğe bağlı:) Veri hedefi olarak Azure Synapse Analytics'i seçerseniz, hazırlama için Azure Synapse Analytics Polybase tarafından gerekli olan Azure Blob depolamaya da bağlantı sağlamanız gerekir. Şablon sizin için bir kapsayıcı yolu oluşturur. İşlem hattı çalıştırıldıktan sonra kapsayıcının Blob depolamada oluşturulup oluşturulmadığını denetleyin.