PowerShell kullanarak değişiklik izleme bilgilerini kullanarak verileri Azure SQL Veritabanı Azure Blob Depolama artımlı olarak yükleme
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 öğreticide, Azure SQL Veritabanı'daki kaynak veritabanındaki değişiklik izleme bilgilerine dayalı olarak değişiklik verilerini bir Azure blob depolama alanına yükleyen bir işlem hattına sahip bir Azure veri fabrikası oluşturacaksınız.
Bu öğreticide aşağıdaki adımları gerçekleştireceksiniz:
- Kaynak veri deposunu hazırlama
- Veri fabrikası oluşturma.
- Bağlı hizmet oluşturma.
- Kaynak, havuz ve değişiklik izleme veri kümelerini oluşturma.
- Tam kopyalama işlem hattını oluşturma, çalıştırma ve izleme
- Kaynak tabloya veri ekleme veya bu verileri güncelleştirme
- Artımlı kopyalama işlem hattını oluşturma, çalıştırma ve izleme
Not
Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Genel bakış
İlk veriler yüklendikten sonra verileri artımlı olarak yükleme senaryosu, veri tümleştirme çözümlerinde sıkça kullanılır. Bazı durumlarda, kaynak veri deponuzda belirli bir süre içinde değiştirilen veriler (örneğin, LastModifyTime, CreationTime) kolayca dilimlenebilir. Bazı durumlarda değişiklik verilerini, verileri en son işlediğiniz zamandan açıkça ayırt etmenin bir yolu yoktur. Azure SQL Veritabanı ve SQL Server gibi veri depoları tarafından desteklenen Değişiklik İzleme teknolojisi, değişiklik verilerini belirlemek için kullanılabilir. Bu öğreticide, Azure SQL Veritabanındaki değişiklik verilerini Azure Blob Depolama’ya artımlı olarak yüklemek amacıyla SQL Değişiklik İzleme teknolojisiyle Azure Data Factory’nin nasıl kullanılacağı açıklanır. SQL Değişiklik İzleme teknolojisi hakkında daha kesin bilgiler için bkz. SQL Server’da Değişiklik İzleme.
Uçtan uca iş akışı
Değişiklik İzleme teknolojisini kullanarak verileri artımlı olarak yüklemek için sık kullanılan uçtan uca iş akışı adımları burada verilmiştir.
Not
Hem Azure SQL Veritabanı hem de SQL Server, Değişiklik İzleme teknolojisini destekler. Bu öğreticide, Azure SQL Veritabanını kaynak veri deposu olarak kullanılır. Sql Server örneğini de kullanabilirsiniz.
- Geçmiş verilerin ilk yüklenmesi (bir kez çalıştır):
- Azure SQL Veritabanı'daki kaynak veritabanında Değişiklik İzleme teknolojisini etkinleştirin.
- Değiştirilen verileri yakalamak için temel olarak veritabanındaki SYS_CHANGE_VERSION ilk değerini alın.
- Kaynak veritabanından bir Azure blob depolama alanına tam veri yükleyin.
- Delta verilerinin bir zamanlamaya göre artımlı yüklenmesi (verilerin ilk yüklenmesinden sonra düzenli aralıklarla çalıştırılır):
- Eski ve yeni SYS_CHANGE_VERSION değerleri alın.
- sys.change_tracking_tables yerine kaynak tablosundaki verilerle değiştirilen satırların (iki SYS_CHANGE_VERSION değeri arasında) birincil anahtarlarını birleştirerek değişiklik verilerini yükleyin ve ardından değişiklik verilerini hedefe taşıyın.
- SYS_CHANGE_VERSION değerini bir sonraki değişiklik yükleme için değiştirin.
Yüksek düzeyli çözüm
Bu öğreticide, aşağıdaki iki işlemi gerçekleştiren iki işlem hattı oluşturursunuz:
İlk yükleme: Kaynak veri deposundaki (Azure SQL Veritabanı) tüm verileri hedef veri deposuna (Azure Blob Depolama) kopyalayan bir kopyalama etkinliğine sahip bir işlem hattı oluşturursunuz.
Artımlı yükleme: Aşağıdaki etkinliklerle bir işlem hattı oluşturursunuz ve bunu düzenli olarak çalıştırırsınız.
- Eski ve yeni SYS_CHANGE_VERSION değerlerini Azure SQL Veritabanı’ndan almak için iki arama etkinliği oluşturun ve bunu kopyalama etkinliğine geçirin.
- SYS_CHANGE_VERSION değerleri arasındaki eklenen/güncelleştirilen/silinen verileri Azure SQL Veritabanı’ndan Azure Blob Depolama’ya kopyalamak için bir kopyalama etkinliği oluşturun.
- SYS_CHANGE_VERSION değerini bir sonraki işlem hattı çalıştırmasında güncelleştirmek için bir saklı yordam etkinliği oluşturun.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
- Azure PowerShell. Azure PowerShell’i yükleme ve yapılandırma konusundaki yönergeleri izleyerek en güncel Azure PowerShell modüllerini yükleyin.
- Azure SQL Veritabanı. Veritabanını kaynak veri deposu olarak kullanabilirsiniz. Azure SQL Veritabanı'da veritabanınız yoksa, oluşturma adımları için Azure SQL Veritabanı'da veritabanı oluşturma makalesine bakın.
- Azure Depolama hesabı. Blob depolamayı havuz veri deposu olarak kullanabilirsiniz. Azure depolama hesabınız yoksa, oluşturma adımları için Depolama hesabı oluşturma makalesine bakın. adftutorial adlı bir kapsayıcı oluşturun.
Veritabanınızda veri kaynağı tablosu oluşturma
SQL Server Management Studio'yu başlatın ve SQL Veritabanı bağlanın.
Sunucu Gezgini’nde veritabanınıza sağ tıklayın ve Yeni Sorgu’yu seçin.
Veri kaynağı deposu olarak adlandırılan
data_source_table
bir tablo oluşturmak için veritabanınızda aşağıdaki SQL komutunu çalıştırın.create table data_source_table ( PersonID int NOT NULL, Name varchar(255), Age int PRIMARY KEY (PersonID) ); INSERT INTO data_source_table (PersonID, Name, Age) VALUES (1, 'aaaa', 21), (2, 'bbbb', 24), (3, 'cccc', 20), (4, 'dddd', 26), (5, 'eeee', 22);
Aşağıdaki SQL sorgusunu çalıştırarak veritabanınızda ve kaynak tabloda (data_source_table) Değişiklik İzleme mekanizmasını etkinleştirin:
Not
- Veritabanınızın adını>, data_source_table olan veritabanınızın adıyla değiştirin<.
- Değiştirilen veriler, geçerli örnekte iki gün boyunca saklanır. Değiştirilen verileri üç günlük veya daha uzun aralıklarla yüklerseniz, bazı değiştirilen veriler dahil edilmez. Bu durumda CHANGE_RETENTION değerini değiştirip daha büyük bir sayı belirlemelisiniz. Alternatif olarak, değiştirilen verilerin iki gün içinde yüklenmesini de sağlayabilirsiniz. Daha fazla bilgi için bkz. Veritabanı için değişiklik izlemeyi etkinleştirme
ALTER DATABASE <your database name> SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON) ALTER TABLE data_source_table ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
Yeni bir tablo oluşturun ve aşağıdaki sorguyu çalıştırarak ChangeTracking_version değerini varsayılan değerle depolayın:
create table table_store_ChangeTracking_version ( TableName varchar(255), SYS_CHANGE_VERSION BIGINT, ); DECLARE @ChangeTracking_version BIGINT SET @ChangeTracking_version = CHANGE_TRACKING_CURRENT_VERSION(); INSERT INTO table_store_ChangeTracking_version VALUES ('data_source_table', @ChangeTracking_version)
Not
SQL Veritabanı için değişiklik izlemeyi etkinleştirdikten sonra veriler değiştirilmezse, değişiklik izleme sürümünün değeri 0 olur.
Veritabanınızda saklı yordam oluşturmak için aşağıdaki sorguyu çalıştırın. İşlem hattı, bu saklı yordamı, bir önceki adımda oluşturduğunuz tablodaki değişiklik izleme sürümünü güncelleştirmeye çağırır.
CREATE PROCEDURE Update_ChangeTracking_Version @CurrentTrackingVersion BIGINT, @TableName varchar(50) AS BEGIN UPDATE table_store_ChangeTracking_version SET [SYS_CHANGE_VERSION] = @CurrentTrackingVersion WHERE [TableName] = @TableName END
Azure PowerShell
Azure PowerShell’i yükleme ve yapılandırma konusundaki yönergeleri izleyerek en güncel Azure PowerShell modüllerini yükleyin.
Veri fabrikası oluşturma
Daha sonra PowerShell komutlarında kullanacağınız kaynak grubu adı için bir değişken tanımlayın. Aşağıdaki komut metnini PowerShell'e kopyalayın Azure kaynak grubu için çift tırnak içinde bir ad belirtin ve ardından komutu çalıştırın. Örneğin:
"adfrg"
.$resourceGroupName = "ADFTutorialResourceGroup";
Kaynak grubu zaten varsa, üzerine yazılmasını istemeyebilirsiniz.
$resourceGroupName
değişkenine farklı bir değer atayın ve komutu yeniden çalıştırınVeri fabrikasının konumu için bir değişken tanımlayın:
$location = "East US"
Azure kaynak grubunu oluşturmak için aşağıdaki komutu çalıştırın:
New-AzResourceGroup $resourceGroupName $location
Kaynak grubu zaten varsa, üzerine yazılmasını istemeyebilirsiniz.
$resourceGroupName
değişkenine farklı bir değer atayın ve komutu yeniden çalıştırın.Veri fabrikasının adı için bir değişken tanımlayın.
Önemli
Veri fabrikasının adını genel olarak benzersiz olacak şekilde güncelleştirin.
$dataFactoryName = "IncCopyChgTrackingDF";
Veri fabrikasını oluşturmak için aşağıdaki Set-AzDataFactoryV2 cmdlet'ini çalıştırın:
Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location $location -Name $dataFactoryName
Aaşağıdaki noktaları unutmayın:
Azure data factory adı küresel olarak benzersiz olmalıdır. Aşağıdaki hata iletisini alırsanız adı değiştirip yeniden deneyin.
The specified Data Factory name 'ADFIncCopyChangeTrackingTestFactory' is already in use. Data Factory names must be globally unique.
Data Factory örnekleri oluşturmak için, Azure'da oturum açarken kullandığınız kullanıcı hesabı katkıda bulunan veya sahip rollerinin üyesi ya da bir Azure aboneliğinin yöneticisi olmalıdır.
Data Factory'nin kullanılabileceği Azure bölgelerinin bir listesi için bir sonraki sayfada ilgilendiğiniz bölgeleri seçin ve Analytics'i genişleterek Data Factory: Products available by region (Bölgeye göre kullanılabilir durumdaki ürünler) bölümünü bulun. Veri fabrikası tarafından kullanılan verileri depoları (Azure Depolama, Azure SQL Veritabanı vb.) ve işlemler (HDInsight vb.) başka bölgelerde olabilir.
Bağlı hizmetler oluşturma
Veri depolarınızı ve işlem hizmetlerinizi veri fabrikasına bağlamak için veri fabrikasında bağlı hizmetler oluşturursunuz. Bu bölümde, Azure SQL Veritabanı'da Azure Depolama hesabınıza ve veritabanınıza bağlı hizmetler oluşturacaksınız.
Azure Depolama bağlı hizmeti oluşturun.
Bu adımda, Azure Depolama Hesabınızı veri fabrikasına bağlarsınız.
:\ADFTutorials\IncCopyChangeTrackingTutorial klasöründe şu içeriğe sahip AzureStorageLinkedService.json adlı bir JSON dosyası oluşturun: (Böyle bir klasör mevcut değilse, bunu oluşturun.) dosyasını kaydetmeden önce değerini
<accountKey>
Azure depolama hesabınızın adı ve anahtarıyla değiştirin<accountName>
.{ "name": "AzureStorageLinkedService", "properties": { "type": "AzureStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>" } } }
Azure PowerShell'de C:\ADFTutorials\IncCopyChangeTrackingTutorial klasörüne geçin.
Bağlı hizmeti oluşturmak için Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırın: AzureStorageLinkedService. Aşağıdaki örnekte, ResourceGroupName ve DataFactoryName parametrelerinin değerlerini geçirirsiniz.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"
Örnek çıktı aşağıdaki gibidir:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Properties : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
Azure SQL Veritabanı bağlı hizmeti oluşturun.
Bu adımda veritabanınızı veri fabrikasına bağlarsınız.
C:\ADFTutorials\IncCopyChangeTrackingTutorial klasöründe şu içeriğe sahip AzureSQLDatabaseLinkedService.json adlı bir JSON dosyası oluşturun: Dosyayı kaydetmeden önce sunucunuzun adını> ve <veritabanınızın> adını sunucunuzun ve veritabanınızın adıyla değiştirin<. Veri fabrikanızın yönetilen kimliğine erişim vermek için Azure SQL Server'ınızı da yapılandırmanız gerekir.
{ "name": "AzureSqlDatabaseLinkedService", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:<your-server-name>.database.windows.net,1433;Database=<your-database-name>;" }, "authenticationType": "ManagedIdentity", "annotations": [] } }
Azure PowerShell'de Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırarak bağlı hizmeti oluşturun: AzureSQLDatabaseLinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSQLDatabaseLinkedService" -File ".\AzureSQLDatabaseLinkedService.json"
Örnek çıktı aşağıdaki gibidir:
LinkedServiceName : AzureSQLDatabaseLinkedService ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
Veri kümeleri oluşturma
Bu adımda veri kaynağını, veri hedefini ve SYS_CHANGE_VERSION depolanacağı yeri temsil eden veri kümeleri oluşturacaksınız.
Kaynak veri kümesi oluşturma
Bu adımda, kaynak verileri temsil etmek için bir veri kümesi oluşturursunuz.
Aşağıdaki içeriğe sahip klasörde SourceDataset.json adlı bir JSON dosyası oluşturun:
{ "name": "SourceDataset", "properties": { "type": "AzureSqlTable", "typeProperties": { "tableName": "data_source_table" }, "linkedServiceName": { "referenceName": "AzureSQLDatabaseLinkedService", "type": "LinkedServiceReference" } } }
Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırarak veri kümesini oluşturun: SourceDataset
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SourceDataset" -File ".\SourceDataset.json"
Cmdlet’in örnek çıktısı aşağıdaki gibidir:
DatasetName : SourceDataset ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Havuz veri kümesi oluşturma
Bu adımda, kaynak veri deposundan kopyalanan verileri temsil etmek için bir veri kümesi oluşturursunuz.
Aşağıdaki içeriğe sahip klasörde SinkDataset.json adlı bir JSON dosyası oluşturun:
{ "name": "SinkDataset", "properties": { "type": "AzureBlob", "typeProperties": { "folderPath": "adftutorial/incchgtracking", "fileName": "@CONCAT('Incremental-', pipeline().RunId, '.txt')", "format": { "type": "TextFormat" } }, "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" } } }
Önkoşulların bir parçası olarak, Azure Blob Depolama’nızda adftutorial kapsayıcısını oluşturursunuz. Henüz yoksa kapsayıcıyı oluşturun (veya) var olan bir kapsayıcının adına ayarlayın. Bu öğreticide, çıkış dosyası adı dinamik olarak şu ifade kullanılarak oluşturulur: @CONCAT('Incremental-', pipeline(). RunId, '.txt').
Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırarak veri kümesini oluşturun: SinkDataset
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SinkDataset" -File ".\SinkDataset.json"
Cmdlet’in örnek çıktısı aşağıdaki gibidir:
DatasetName : SinkDataset ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureBlobDataset
Değişiklik izleme veri kümesi oluşturma
Bu adımda değişiklik izleme sürümünü depolamak için bir veri kümesi oluşturacaksınız.
Aşağıdaki içeriğe sahip klasörde ChangeTrackingDataset.json adlı bir JSON dosyası oluşturun:
{ "name": " ChangeTrackingDataset", "properties": { "type": "AzureSqlTable", "typeProperties": { "tableName": "table_store_ChangeTracking_version" }, "linkedServiceName": { "referenceName": "AzureSQLDatabaseLinkedService", "type": "LinkedServiceReference" } } }
Önkoşulların bir parçası olarak table_store_ChangeTracking_version tablosunu oluşturursunuz.
Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırarak veri kümesini oluşturun: ChangeTrackingDataset
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "ChangeTrackingDataset" -File ".\ChangeTrackingDataset.json"
Cmdlet’in örnek çıktısı aşağıdaki gibidir:
DatasetName : ChangeTrackingDataset ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Tam kopya için işlem hattı oluşturma
Bu adımda, kaynak veri deposundaki (Azure SQL Veritabanı) tüm verileri hedef veri deposuna (Azure Blob Depolama) kopyalayan bir kopyalama etkinliğine sahip bir işlem hattı oluşturursunuz.
Şu içeriğe sahip klasörde bir FullCopyPipeline.json adlı bir JSON dosyası oluşturun:
{ "name": "FullCopyPipeline", "properties": { "activities": [{ "name": "FullCopyActivity", "type": "Copy", "typeProperties": { "source": { "type": "SqlSource" }, "sink": { "type": "BlobSink" } }, "inputs": [{ "referenceName": "SourceDataset", "type": "DatasetReference" }], "outputs": [{ "referenceName": "SinkDataset", "type": "DatasetReference" }] }] } }
İşlem hattını oluşturmak için Set-AzDataFactoryV2Pipeline cmdlet'ini çalıştırın: FullCopyPipeline.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "FullCopyPipeline" -File ".\FullCopyPipeline.json"
Örnek çıktı aşağıdaki gibidir:
PipelineName : FullCopyPipeline ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Activities : {FullCopyActivity} Parameters :
Tam kopyalama işlem hattını çalıştırma
Invoke-AzDataFactoryV2Pipeline cmdlet'ini kullanarak fullCopyPipeline işlem hattını çalıştırın.
Invoke-AzDataFactoryV2Pipeline -PipelineName "FullCopyPipeline" -ResourceGroup $resourceGroupName -dataFactoryName $dataFactoryName
Tam kopyalama işlem hattını izleme
Azure portalı’nda oturum açın.
Tüm hizmetler’e tıklayın,
data factories
anahtar sözcüğüyle arama yapın ve Veri fabrikaları seçeneğini belirleyin.Veri fabrikaları listesinde veri fabrikanızı arayın ve bunu seçerek Veri fabrikası sayfasını başlatın.
Veri fabrikası sayfasında İzleme ve Yönetme kutucuğuna tıklayın.
Veri Entegrasyonu Uygulaması ayrı bir sekmede başlatılır. Tüm işlem hattı çalıştırmalarını ve bunların durumlarını görebilirsiniz. Aşağıdaki örnekte işlem hattı çalıştırmasının durumunun Başarılı olarak belirtildiğini görebilirsiniz. Parametreler sütunundaki bağlantıya tıklayarak işlem hattına geçirilen parametreleri denetleyebilirsiniz. Bir hata oluştuysa, Hata sütununda bir bağlantı görürsünüz. Eylemler sütunundaki bağlantıya tıklayın.
Eylemler sütunundaki bağlantıya tıkladığınızda, işlem hattına yönelik tüm eylem çalıştırmalarını gösteren sayfayı görürsünüz.
İşlem hattı çalıştırmaları görünümüne dönmek için, resimde gösterildiği gibi İşlem hatları seçeneğine tıklayın.
Sonuçları gözden geçirin
adftutorial
kapsayıcısının incremental-<GUID>.txt
klasöründe incchgtracking
adlı bir dosya görürsünüz.
Dosyada veritabanınızdaki veriler bulunmalıdır:
1,aaaa,21
2,bbbb,24
3,cccc,20
4,dddd,26
5,eeee,22
Kaynak tabloya daha fazla veri ekleme
Bir satır eklemek ve satırı güncelleştirmek için veritabanınızda aşağıdaki sorguyu çalıştırın.
INSERT INTO data_source_table
(PersonID, Name, Age)
VALUES
(6, 'new','50');
UPDATE data_source_table
SET [Age] = '10', [name]='update' where [PersonID] = 1
Değişiklik kopyası için bir işlem hattı oluşturma
Bu adımda, aşağıdaki etkinliklerle bir işlem hattı oluşturursunuz ve bunu düzenli olarak çalıştırırsınız. Arama etkinlikleri, eski ve yeni SYS_CHANGE_VERSION değerlerini Azure SQL Veritabanı’ndan alır ve bunu kopyalama etkinliğine geçirir. Kopyalama etkinliği, SYS_CHANGE_VERSION değerleri arasındaki eklenen/güncelleştirilen/silinen verileri Azure SQL Veritabanı’ndan Azure Blob Depolama’ya kopyalar. Saklı yordam etkinliği, SYS_CHANGE_VERSION değerini bir sonraki işlem hattı çalıştırmasında güncelleştirir.
Aşağıdaki içeriğe sahip klasörde bir IncrementalCopyPipeline.json adlı bir JSON dosyası oluşturun:
{ "name": "IncrementalCopyPipeline", "properties": { "activities": [ { "name": "LookupLastChangeTrackingVersionActivity", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "select * from table_store_ChangeTracking_version" }, "dataset": { "referenceName": "ChangeTrackingDataset", "type": "DatasetReference" } } }, { "name": "LookupCurrentChangeTrackingVersionActivity", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT CHANGE_TRACKING_CURRENT_VERSION() as CurrentChangeTrackingVersion" }, "dataset": { "referenceName": "SourceDataset", "type": "DatasetReference" } } }, { "name": "IncrementalCopyActivity", "type": "Copy", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "select data_source_table.PersonID,data_source_table.Name,data_source_table.Age, CT.SYS_CHANGE_VERSION, SYS_CHANGE_OPERATION from data_source_table RIGHT OUTER JOIN CHANGETABLE(CHANGES data_source_table, @{activity('LookupLastChangeTrackingVersionActivity').output.firstRow.SYS_CHANGE_VERSION}) as CT on data_source_table.PersonID = CT.PersonID where CT.SYS_CHANGE_VERSION <= @{activity('LookupCurrentChangeTrackingVersionActivity').output.firstRow.CurrentChangeTrackingVersion}" }, "sink": { "type": "BlobSink" } }, "dependsOn": [ { "activity": "LookupLastChangeTrackingVersionActivity", "dependencyConditions": [ "Succeeded" ] }, { "activity": "LookupCurrentChangeTrackingVersionActivity", "dependencyConditions": [ "Succeeded" ] } ], "inputs": [ { "referenceName": "SourceDataset", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "SinkDataset", "type": "DatasetReference" } ] }, { "name": "StoredProceduretoUpdateChangeTrackingActivity", "type": "SqlServerStoredProcedure", "typeProperties": { "storedProcedureName": "Update_ChangeTracking_Version", "storedProcedureParameters": { "CurrentTrackingVersion": { "value": "@{activity('LookupCurrentChangeTrackingVersionActivity').output.firstRow.CurrentChangeTrackingVersion}", "type": "INT64" }, "TableName": { "value": "@{activity('LookupLastChangeTrackingVersionActivity').output.firstRow.TableName}", "type": "String" } } }, "linkedServiceName": { "referenceName": "AzureSQLDatabaseLinkedService", "type": "LinkedServiceReference" }, "dependsOn": [ { "activity": "IncrementalCopyActivity", "dependencyConditions": [ "Succeeded" ] } ] } ] } }
İşlem hattını oluşturmak için Set-AzDataFactoryV2Pipeline cmdlet'ini çalıştırın: FullCopyPipeline.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IncrementalCopyPipeline" -File ".\IncrementalCopyPipeline.json"
Örnek çıktı aşağıdaki gibidir:
PipelineName : IncrementalCopyPipeline ResourceGroupName : ADFTutorialResourceGroup DataFactoryName : IncCopyChgTrackingDF Activities : {LookupLastChangeTrackingVersionActivity, LookupCurrentChangeTrackingVersionActivity, IncrementalCopyActivity, StoredProceduretoUpdateChangeTrackingActivity} Parameters :
Artımlı kopyalama işlem hattını çalıştırma
Invoke-AzDataFactoryV2Pipeline cmdlet'ini kullanarak IncrementalCopyPipeline işlem hattını çalıştırın.
Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroup $resourceGroupName -dataFactoryName $dataFactoryName
Artımlı kopyalama işlem hattını izleme
Veri Tümleştirme Uygulaması’nda işlem hattı çalıştırmaları görünümünü yenileyin. Listede IncrementalCopyPipeline değerini gördüğünüzü onaylayın. Eylemler sütunundaki bağlantıya tıklayın.
Eylemler sütunundaki bağlantıya tıkladığınızda, işlem hattına yönelik tüm eylem çalıştırmalarını gösteren sayfayı görürsünüz.
İşlem hattı çalıştırmaları görünümüne dönmek için, resimde gösterildiği gibi İşlem hatları seçeneğine tıklayın.
Sonuçları gözden geçirin
adftutorial
kapsayıcısının incchgtracking
klasöründe ikinci dosyayı görürsünüz.
Dosyada yalnızca veritabanınızdaki delta verileri bulunmalıdır. U
bulunan kayıt, veritabanındaki güncelleştirilmiş satırdır ve I
ise eklenen bir satırdır.
1,update,10,2,U
6,new,50,1,I
İlk üç sütun, data_source_table tablosundaki değiştirilmiş verilerdir. Son iki sütun, değişiklik izleme sistem tablosundaki meta verilerdir. Dördüncü sütun, değiştirilen her satıra ilişkin SYS_CHANGE_VERSION değeridir. Beşinci sütun ise işlemdir: U = güncelleştirme, I = ekleme. Değişiklik izleme bilgileri hakkında daha fazla ayrıntı için bkz. CHANGETABLE.
==================================================================
PersonID Name Age SYS_CHANGE_VERSION SYS_CHANGE_OPERATION
==================================================================
1 update 10 2 U
6 new 50 1 I
İlgili içerik
Yeni ve değiştirilmiş dosyaları yalnızca LastModifiedDate'larına göre kopyalama hakkında bilgi edinmek için aşağıdaki öğreticiye ilerleyin: