PowerShell ve değişiklik izleme bilgilerini kullanarak verileri Azure SQL Veritabanı'den Azure Blob Depolama'e artımlı olarak yükleme

ŞUNLARA UYGULANIR: Azure Data Factory Azure Synapse Analytics

İpucu

Microsoft Fabric'daki Data Factory, daha basit bir mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip yeni nesil Azure Data Factory. Veri tümleştirmeyi yeni kullanmaya başladıysanız Fabric Data Factory ile başlayın. Mevcut ADF iş yükleri veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltebilir.

Bu öğreticide, Azure SQL Veritabanındaki kaynak veritabanının değişiklik izleme bilgilerini temel alarak delta verilerini yükleyen bir işlem hattıyla bir Azure veri fabrikası oluşturacaksınız ve bu verileri Azure blob depolamaya taşıyacaksı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şime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell yükleme. Az PowerShell modülüne nasıl geçiş yapılacağını öğrenmek için bkz. AzureRM'den Az Azure PowerShell dağıtma.

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, verileri en son işlediğiniz zamandan bu yana olan delta verilerini açıkça ayırt etmenin bir yolu yoktur. değişiklik verilerini tanımlamak için Azure SQL Veritabanı ve SQL Server gibi veri depoları tarafından desteklenen Değişiklik İzleme teknolojisi kullanılabilir. Bu öğreticide, SQL Değişiklik İzleme teknolojisiyle Azure Data Factory kullanılarak Azure SQL Veritabanı'den Azure Blob Depolama'a delta verilerini artımlı olarak yüklemenin nasıl yapılacağı açıklanmaktadır. SQL Değişiklik İzleme teknolojisi hakkında daha somut bilgi 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 kaynak veri deposu olarak Azure SQL Veritabanı kullanılır. SQL Server örneği de kullanabilirsiniz.

  1. Geçmiş verilerin ilk yüklenmesi (bir kez çalıştır):
    1. Azure SQL Veritabanı kaynak veritabanında Değişiklik İzleme teknolojisini etkinleştirin.
    2. Değiştirilen verileri yakalamak için referans olarak veritabanındaki SYS_CHANGE_VERSION'in ilk değerini edinin.
    3. Kaynak veritabanından Azure blob depolama alanına tam veri yükleyin.
  2. Delta verilerinin bir zamanlamaya göre artımlı yüklenmesi (verilerin ilk yüklenmesinden sonra düzenli aralıklarla çalıştırılır):
    1. Eski ve yeni SYS_CHANGE_VERSION değerleri alın.
    2. sys.change_tracking_tables ile kaynak tablosu içindeki verileri iki SYS_CHANGE_VERSION değeri arasında değiştirilen satırların birincil anahtarlarına göre birleştirerek delta verilerini yükleyin ve ardından delta verilerini hedefe taşıyın.
    3. SYS_CHANGE_VERSION değerini bir sonraki delta yüklemesi için güncelleyin.

Yüksek düzeyli çözüm

Bu öğreticide, aşağıdaki iki işlemi gerçekleştiren iki işlem hattı oluşturursunuz:

  1. Initial load: tüm verileri kaynak veri deposundan (Azure SQL Veritabanı) hedef veri deposuna (Azure Blob Depolama) kopyalayan kopyalama etkinliğine sahip bir işlem hattı oluşturursunuz.

    Verilerin tam yüklenmesi

  2. 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.

    1. İki arama etkinliği oluşturun, eski ve yeni SYS_CHANGE_VERSION almak ve bunları Azure SQL Veritabanı'den kopyalama etkinliğine geçirmek için.
    2. İki SYS_CHANGE_VERSION değeri arasında eklenen/güncelleştirilen/silinen verileri Azure SQL Veritabanı Azure Blob Depolama kopyalamak için bir kopyalama etkinliği oluşturun.
    3. 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.

    Artımlı yükleme akış diyagramı

Azure aboneliğiniz yoksa başlamadan önce bir free hesabı oluşturun.

Önkoşullar

  • Azure PowerShell. Azure PowerShell yükleme ve yapılandırma yönergelerini izleyerek en son 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

  1. SQL Server Management Studio başlatın ve SQL Veritabanı'na bağlanın.

  2. Sunucu Gezgini’nde veritabanınıza sağ tıklayın ve Yeni Sorgu’yu seçin.

  3. 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);
    
    
  4. 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ı adını>, data_source_table'ı içeren 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)
    
  5. 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.

  6. 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 yükleme ve yapılandırma yönergelerini izleyerek en son Azure PowerShell modüllerini yükleyin.

Veri fabrikası oluşturma

  1. 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, çift tırnak içinde Azure kaynak grubu için bir ad belirtin ve komutunu ç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ın

  2. Veri fabrikasının konumu için bir değişken tanımlayın:

    $location = "East US"
    
  3. 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.

  4. 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";
    
  5. 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 veri fabrikasının adı genel 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çmak için kullandığınız kullanıcı hesabının Azure aboneliğinde contributor veya owner rollerine sahip olması ya da administrator olması gerekir.

  • Data Factory'nin şu anda kullanılabilir olduğu Azure bölgelerin listesi için aşağıdaki sayfada ilginizi çekebilecek bölgeleri seçin ve ardından Analytics'yi genişleterek Data Factory: Products by region öğesini bulun. Veri fabrikası tarafından kullanılan veri depoları (Azure Depolama, Azure SQL Veritabanı vb.) ve işlem (HDInsight vb.) diğer 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 Depolama hesabınıza ve Azure SQL Veritabanı veritabanınıza bağlı hizmetler oluşturacaksınız.

Azure Depolama ile bağlı hizmet oluşturun.

Bu adımda, Azure Depolama Hesabınızı veri fabrikasına bağlarsınız.

  1. :\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.) dosyayı kaydetmeden önce <accountName>, <accountKey> değerini Azure depolama hesabınızın adı ve anahtarıyla değiştirin.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "type": "AzureStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>"
            }
        }
    }
    
  2. Azure PowerShell'da C:\ADFTutorials\IncCopyChangeTrackingTutorial klasörüne geçin.

  3. 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
    

bağlı Azure SQL Veritabanı hizmeti oluşturun.

Bu adımda veritabanınızı veri fabrikasına bağlarsınız.

  1. C:\ADFTutorials\IncCopyChangeTrackingTutorial klasöründe şu içeriğe sahip AzureSQLDatabaseLinkedService.jsonadlı 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>. Azure SQL Server'ınızı, veri fabrikanızın yönetilen kimliğine erişim vermek için yapılandırmanız da gerekir.

    {
    "name": "AzureSqlDatabaseLinkedService",
    "properties": {
            "type": "AzureSqlDatabase",
            "typeProperties": {
                "connectionString": "Server=tcp:<your-server-name>.database.windows.net,1433;Database=<your-database-name>;"
            },
            "authenticationType": "ManagedIdentity",
            "annotations": []
        }
    }
    
  2. Azure PowerShell içinde, bağlı hizmeti oluşturmak için Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırın: 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ı ve veri hedefini temsil eden veri setlerini oluşturursunuz. SYS_CHANGE_VERSION'in depolanacağı yer.

Kaynak veri kümesi oluşturma

Bu adımda, kaynak verileri temsil etmek için bir veri kümesi oluşturursunuz.

  1. 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"
            }
        }
    }   
    
  2. 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.

  1. 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'de adftutorial adlı kapsayıcıyı oluşturursunuz. Henüz yoksa kapsayıcıyı oluşturun veya mevcut bir kapsayıcının ismini belirleyin. Bu öğreticide, çıkış dosyası adı dinamik olarak şu ifade kullanılarak oluşturulur: @CONCAT('Incremental-', pipeline().RunId, '.txt').

  2. 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.

  1. 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.

  2. 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, tüm verileri kaynak veri deposundan (Azure SQL Veritabanı) hedef veri deposuna (Azure Blob Depolama) kopyalayan kopyalama etkinliğine sahip bir işlem hattı oluşturursunuz.

  1. Ş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"
                }]
            }]
        }
    }
    
  2. İş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

  1. Azure portalında oturum açın.

  2. 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ı menüsü

  3. Veri fabrikaları listesinde veri fabrikanızı arayın ve bunu seçerek Veri fabrikası sayfasını başlatın.

    Veri fabrikanızı arama

  4. Veri fabrikası sayfasında İzleme ve Yönetme kutucuğuna tıklayın.

    İzleme ve Yönetme kutucuğu

  5. 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.

    Bir veri fabrikası için boru hattı çalıştırmalarını gösteren ekran görüntüsü.

  6. 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 Hatları bağlantısının vurgulu olduğu bir veri fabrikasının etkinlik çalıştırmalarını gösteren ekran görüntüsü.

  7. İş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

incremental-<GUID>.txt kapsayıcısının incchgtracking klasöründe adftutorial adlı bir dosya görürsünüz.

Tam kopyadan çıkış dosyası

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

Delta kopyası için bir veri 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. Azure SQL Veritabanı'den eski ve yeni SYS_CHANGE_VERSION'i lookup etkinlikleri alır ve bunu kopyalama etkinliğine geçirir. copy activity, iki SYS_CHANGE_VERSION değeri arasına eklenen/güncelleştirilen/silinen verileri Azure SQL Veritabanı ile Azure Blob Depolama arasına kopyalar. Saklı yordam etkinliği, SYS_CHANGE_VERSION değerini bir sonraki işlem hattı çalıştırmasında güncelleştirir.

  1. 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"
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. İş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

  1. Veri Entegrasyonu Uygulaması’nda işlem hattı çalışmaları 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.

    İşlem hattınız da dahil olmak üzere bir veri fabrikası için işlem hattı çalıştırmalarını gösteren ekran görüntüsü.

  2. 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.

    Bir veri fabrikasına ait boru hattı çalıştırmalarını gösteren ekran görüntüsü; bunların birkaçı başarılı olarak işaretlenmiş.

  3. İş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

incchgtracking kapsayıcısının adftutorial klasöründe ikinci dosyayı görürsünüz.

Artımlı kopyadan çıkış dosyası

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

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: