Incrementeel gegevens laden van Azure SQL Database naar Azure Blob Storage met behulp van gegevens over het bijhouden van wijzigingen met behulp van PowerShell

Van toepassing op: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory in Microsoft Fabric is de volgende generatie van Azure Data Factory, met een eenvoudigere architectuur, ingebouwde AI en nieuwe functies. Als u nieuw bent in gegevensintegratie, begint u met Fabric Data Factory. Bestaande ADF-workloads kunnen upgraden naar Fabric om toegang te krijgen tot nieuwe mogelijkheden voor gegevenswetenschap, realtime analyses en rapportage.

In deze zelfstudie maakt u een Azure data factory met een pijplijn waarmee deltagegevens worden geladen op basis van change tracking informatie in de brondatabase in Azure SQL Database naar een Azure blobopslag.

In deze zelfstudie voert u de volgende stappen uit:

  • Voorbereiden van de bron-gegevensopslag
  • Een data factory maken.
  • Maak gekoppelde services.
  • Maak bron-, sink- en wijzigingsvolggegevenssets aan.
  • Maken, uitvoeren en bewaken van het volledige kopiëerproces
  • Gegevens in de brontabel toevoegen of bijwerken
  • De incrementele kopie pijplijn maken, uitvoeren en bewaken

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Install Azure PowerShell om aan de slag te gaan. Zie Migrate Azure PowerShell van AzureRM naar Az voor meer informatie over het migreren naar de Az PowerShell-module.

Overzicht

In een gegevensintegratieoplossing is het incrementeel laden van gegevens na de initiële gegevensladen een veelvoorkomend scenario. De gewijzigde gegevens binnen een periode in de gegevensopslag van uw bron kunnen in sommige gevallen gemakkelijk worden opgedeeld (bijvoorbeeld in LastModifyTime en CreationTime). In sommige gevallen is er geen expliciete manier voor het identificeren van de deltagegevens van de laatste keer dat u de gegevens verwerkt. De technologie voor wijzigingen bijhouden die wordt ondersteund door gegevensarchieven zoals Azure SQL Database en SQL Server kunnen worden gebruikt om de deltagegevens te identificeren. In deze zelfstudie wordt beschreven hoe u Azure Data Factory gebruikt met SQL Change Tracking-technologie om deltagegevens van Azure SQL Database incrementeel te laden in Azure Blob Storage. Zie Change tracking in SQL Server voor meer concrete informatie over SQL Change Tracking-technologie.

Eind-tot-eind werkstroom

Hier zijn de volledige workflow stappen voor het incrementeel laden van gegevens met de Change Tracking-technologie.

Notitie

Zowel Azure SQL Database als SQL Server ondersteunen wijzigingstracering. In deze zelfstudie wordt Azure SQL Database gebruikt als brongegevensarchief. U kunt ook een SQL Server-exemplaar gebruiken.

  1. Eerste laad van historische gegevens (eenmaal uitvoeren):
    1. Schakel technologie voor het bijhouden van wijzigingen in de brondatabase in Azure SQL Database in.
    2. Haal de eerste waarde van SYS_CHANGE_VERSION op uit de database als de basislijn voor het vastleggen van gewijzigde gegevens.
    3. Laad volledige gegevens uit de brondatabase in een Azure blobopslag.
  2. Incrementeel laden van deltagegevens volgens een schema (periodiek uitvoeren na het initiële laden van gegevens):
    1. Haal de oude en nieuwe SYS_CHANGE_VERSION waarden op.
    2. Laad de deltagegevens door de primaire sleutels van gewijzigde rijen (tussen twee SYS_CHANGE_VERSION-waarden) uit sys.change_tracking_tables te koppelen met gegevens in de brontabel, en verplaats vervolgens de deltagegevens naar de bestemming.
    3. Werk de SYS_CHANGE_VERSION bij voor het volgende delta-laden.

Oplossingen op hoog niveau

In deze zelfstudie maakt u twee pijplijnen die de volgende twee bewerkingen uitvoeren:

  1. Initial load: maakt u een pijplijn met een kopieeractiviteit waarmee de volledige gegevens uit het brongegevensarchief (Azure SQL Database) worden gekopieerd naar het doelgegevensarchief (Azure Blob Storage).

    Volledige laden van gegevens

  2. Incrementeel laden: u maakt een pijplijn met de volgende activiteiten en voert deze periodiek uit.

    1. Maak twee lookup-activiteiten om de oude en nieuwe SYS_CHANGE_VERSION op te halen uit Azure SQL Database en door te geven aan de kopieeractiviteit.
    2. Maak one kopieeractiviteit om de ingevoegde/bijgewerkte/verwijderde gegevens tussen de twee SYS_CHANGE_VERSION waarden van Azure SQL Database naar Azure Blob Storage te kopiëren.
    3. Maak één opgeslagen procedure-activiteit voor het bijwerken van de waarde van SYS_CHANGE_VERSION voor de volgende pijplijnuitvoering.

    Stroomdiagram voor incrementele belasting

Als u geen Azure-abonnement hebt, maakt u een free-account voordat u begint.

Vereisten

  • Azure PowerShell. Installeer de nieuwste Azure PowerShell-modules door de instructies te volgen in Hoe u Azure PowerShell installeert en configureert.
  • Azure SQL Database. U gebruikt de database als de brongegevensopslag. Als u geen database in Azure SQL Database hebt, raadpleegt u het artikel Maak een database in Azure SQL Database artikel voor stappen om er een te maken.
  • Azure Storage account. U gebruikt de Blob-opslag als de sink-gegevensopslag. Als u geen Azure opslagaccount hebt, raadpleegt u het artikel Maak een opslagaccount artikel voor stappen om er een te maken. Maak een container met de naam adftutorial.

Een gegevensbrontabel in uw database maken

  1. Start SQL Server Management Studio en maak verbinding met SQL Database.

  2. Klik in Server Explorer met de rechtermuisknop op de database en kies de Nieuwe query.

  3. Voer de volgende SQL-opdracht uit voor uw database om een tabel met de naam data_source_table te maken als gegevensbronopslag.

    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. Schakel wijzigingen bijhouden op uw database en de brontabel (data_source_table) in door het uitvoeren van de volgende SQL-query:

    Notitie

    • Vervang <uw databasenaam> met de naam van uw database waarin de data_source_table staat.
    • De gewijzigde gegevens worden in het huidige voorbeeld twee dagen bewaard. Als u de gewijzigde gegevens elke drie dagen of meer laadt, zal sommige informatie niet worden meegenomen. U moet dan eventueel de waarde van CHANGE_RETENTION naar een hoger getal wijzigen. U kunt er ook voor zorgen dat de periode voor laden van de gewijzigde gegevens binnen twee dagen ligt. Zie voor meer informatie Inschakelen bijhouden van wijzigingen voor een database
    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. Een nieuwe tabel maken en opslaan van de ChangeTracking_version met een standaardwaarde door de volgende query uit te voeren:

    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)
    

    Notitie

    Als de gegevens niet zijn gewijzigd nadat u het bijhouden van wijzigingen voor Misciroft Azure SQL Database hebt ingeschakeld, is de waarde van de versie van wijzigingen 0.

  6. Voer de volgende query uit om een opgeslagen procedure in uw database te maken. De pijplijn roept deze opgeslagen procedure aan voor het bijwerken van de versie voor wijzigingstracering in de tabel die u in de vorige stap hebt gemaakt.

    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

Installeer de nieuwste Azure PowerShell-modules door de instructies te volgen in Hoe u Azure PowerShell installeert en configureert.

Een data factory maken

  1. Definieer een variabele voor de naam van de resourcegroep die u later gaat gebruiken in PowerShell-opdrachten. Kopieer de volgende opdrachttekst naar PowerShell, geef een naam op voor de Azure resourcegroep tussen dubbele aanhalingstekens en voer de opdracht uit. Voorbeeld: "adfrg".

    $resourceGroupName = "ADFTutorialResourceGroup";
    

    Als de resourcegroep al bestaat, wilt u waarschijnlijk niet dat deze wordt overschreven. Wijs een andere waarde toe aan de $resourceGroupName-variabele en voer de opdracht opnieuw uit.

  2. Definieer een variabele voor de locatie van de data factory:

    $location = "East US"
    
  3. Voer de volgende opdracht uit om de Azure resourcegroep te maken:

    New-AzResourceGroup $resourceGroupName $location
    

    Als de resourcegroep al bestaat, wilt u waarschijnlijk niet dat deze wordt overschreven. Wijs een andere waarde toe aan de $resourceGroupName-variabele en voer de opdracht opnieuw uit.

  4. Definieer een variabele voor de naam van de data factory.

    Belangrijk

    Werk de naam van de data factory bij zodat deze wereldwijd uniek is.

    $dataFactoryName = "IncCopyChgTrackingDF";
    
  5. Voer de volgende cmdlet Set AzDataFactoryV2 uit om de data factory te maken:

    Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location $location -Name $dataFactoryName
    

Let op de volgende punten:

  • De naam van de Azure data factory moet wereldwijd uniek zijn. Als de volgende fout zich voordoet, wijzigt u de naam en probeert u het opnieuw.

    The specified Data Factory name 'ADFIncCopyChangeTrackingTestFactory' is already in use. Data Factory names must be globally unique.
    
  • Als u Data Factory-exemplaren wilt maken, moet het gebruikersaccount dat u gebruikt om u aan te melden bij Azure lid zijn van contributor of owner of een administrator van het Azure-abonnement.

  • Voor een lijst met Azure regio's waarin Data Factory momenteel beschikbaar is, selecteert u de regio's die u interesseren op de volgende pagina en vouwt u vervolgens Analytics uit om Data Factory uit te vouwen: Products beschikbaar per regio. De gegevensarchieven (Azure Storage, Azure SQL Database, enzovoort) en berekeningen (HDInsight, enzovoort) die door data factory worden gebruikt, kunnen zich in andere regio's bevinden.

Gekoppelde services maken

U maakt gekoppelde services in een Data Factory om uw datastores en compute-services aan de Data Factory te koppelen. In deze sectie maakt u gekoppelde services aan uw Azure Storage-account en uw database in Azure SQL Database.

Maak een gekoppelde service voor Azure Storage aan.

In deze stap koppelt u uw Azure Storage Account aan de data factory.

  1. Maak een JSON-bestand met de naam AzureStorageLinkedService.json in de map C:\ADFTutorials\IncCopyChangeTrackingTutorial met de volgende inhoud: Maak de map als deze nog niet bestaat. Vervang <accountName>, <accountKey> door de naam en sleutel van uw Azure-opslagaccount voordat u het bestand opslaat.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "type": "AzureStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>"
            }
        }
    }
    
  2. Schakel in Azure PowerShell over naar de map C:\ADFTutorials\IncCopyChangeTrackingTutorial.

  3. Voer de cmdlet Set-AzDataFactoryV2LinkedService uit om de gekoppelde service te maken: AzureStorageLinkedService. In het volgende voorbeeld geeft u de waarden door voor de parameters ResourceGroupName en DataFactoryName.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"
    

    Hier volgt een voorbeeld van uitvoer:

    LinkedServiceName : AzureStorageLinkedService
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
    

Maak Azure SQL Database gekoppelde service.

In deze stap koppelt u uw database aan de data factory.

  1. Maak een JSON-bestand met de naam AzureSQLDatabaseLinkedService.json in de map C:\ADFTutorials\IncCopyChangeTrackingTutorial met de volgende inhoud: Vervang uw-server-naam en <uw-database-naam> door de naam van uw server en database voordat u het bestand opslaat. U moet uw Azure SQL-server ook configureren om toegang te verlenen tot de beheerde identiteit van uw data factory.

    {
    "name": "AzureSqlDatabaseLinkedService",
    "properties": {
            "type": "AzureSqlDatabase",
            "typeProperties": {
                "connectionString": "Server=tcp:<your-server-name>.database.windows.net,1433;Database=<your-database-name>;"
            },
            "authenticationType": "ManagedIdentity",
            "annotations": []
        }
    }
    
  2. Voer in Azure PowerShell de cmdlet Set-AzDataFactoryV2LinkedService uit om de gekoppelde service te maken: AzureSQLDatabaseLinkedService.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSQLDatabaseLinkedService" -File ".\AzureSQLDatabaseLinkedService.json"
    

    Hier volgt een voorbeeld van uitvoer:

    LinkedServiceName : AzureSQLDatabaseLinkedService
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
    

Gegevenssets maken

In deze stap maakt u gegevenssets om de gegevensbron en -bestemming te vertegenwoordigen. en de plaats voor het opslaan van de SYS_CHANGE_VERSION.

Een brongegevensset maken

In deze stap maakt u een gegevensset die de brongegevens vertegenwoordigt.

  1. Maak een JSON-bestand met de naam SourceDataset.json in dezelfde map met de volgende inhoud:

    {
        "name": "SourceDataset",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "data_source_table"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }   
    
  2. Voer de cmdlet Set-AzDataFactoryV2Dataset uit om de gegevensset te maken: SourceDataset

    Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SourceDataset" -File ".\SourceDataset.json"
    

    Hier volgt een uitvoervoorbeeld van de cmdlet:

    DatasetName       : SourceDataset
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
    

Een 'sink dataset' maken

In deze stap maakt u een gegevensset die de gegevens voorstelt die worden gekopieerd uit de gegevensopslag van de bron.

  1. Maak een JSON-bestand met de naam SinkDataset.json in dezelfde map met de volgende inhoud:

    {
        "name": "SinkDataset",
        "properties": {
            "type": "AzureBlob",
            "typeProperties": {
                "folderPath": "adftutorial/incchgtracking",
                "fileName": "@CONCAT('Incremental-', pipeline().RunId, '.txt')",
                "format": {
                    "type": "TextFormat"
                }
            },
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }
    

    U maakt de adftutorial-container in uw Azure Blob Storage als onderdeel van de vereisten. Maak de container als deze niet bestaat of geef hem de naam van een bestaande container. In deze zelfstudie wordt de naam van het uitvoerbestand dynamisch gegenereerd met behulp van de expressie: @CONCAT('Incremental-', pipeline().RunId, '.txt').

  2. Voer de cmdlet Set-AzDataFactoryV2Dataset uit om de gegevensset te maken: SinkDataset

    Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SinkDataset" -File ".\SinkDataset.json"
    

    Hier volgt een uitvoervoorbeeld van de cmdlet:

    DatasetName       : SinkDataset
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureBlobDataset
    

Maken van een gegevensset voor bijhouden van wijzigingen

In deze stap maakt u een gegevensset voor het opslaan van de versie voor bijhouden van wijzigingen.

  1. Maak een JSON-bestand met de naam ChangeTrackingDataset.json in dezelfde map met de volgende inhoud:

    {
        "name": " ChangeTrackingDataset",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "table_store_ChangeTracking_version"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }
    

    U maakt de tabel table_store_ChangeTracking_version als onderdeel van de voorwaarden.

  2. Voer de cmdlet Set-AzDataFactoryV2Dataset uit om de gegevensset te maken: ChangeTrackingDataset

    Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "ChangeTrackingDataset" -File ".\ChangeTrackingDataset.json"
    

    Hier volgt een uitvoervoorbeeld van de cmdlet:

    DatasetName       : ChangeTrackingDataset
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
    

Een pijplijn maken voor de volledige kopie

In deze stap maakt u een pijplijn met een kopieeractiviteit waarmee de volledige gegevens uit het brongegevensarchief (Azure SQL Database) worden gekopieerd naar het doelgegevensarchief (Azure Blob Storage).

  1. Maak een JSON-bestand: FullCopyPipeline.json in dezelfde map met de volgende inhoud:

    {
        "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. Voer de cmdlet Set-AzDataFactoryV2Pipeline uit om de pijplijn te maken: FullCopyPipeline.

     Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "FullCopyPipeline" -File ".\FullCopyPipeline.json"
    

    Hier volgt een voorbeeld van uitvoer:

     PipelineName      : FullCopyPipeline
     ResourceGroupName : ADFTutorialResourceGroup
     DataFactoryName   : IncCopyChgTrackingDF
     Activities        : {FullCopyActivity}
     Parameters        :
    

Voer de volledige kopie-pijplijn uit

Voer de pijplijn uit: FullCopyPipeline met behulp van de cmdlet Invoke-AzDataFactoryV2Pipeline .

Invoke-AzDataFactoryV2Pipeline -PipelineName "FullCopyPipeline" -ResourceGroup $resourceGroupName -dataFactoryName $dataFactoryName        

De volledige kopieerpijplijn bewaken

  1. Meld u aan bij Azure portal.

  2. Klik op Alle services, zoek met het trefwoord data factories en selecteer Gegevensfabrieken.

    Het menu voor gegevensfabrieken

  3. Zoek naar uw data factory in de lijst met data factorys, en selecteer deze om de Data Factory-pagina te openen.

    Naar de data factory zoeken

  4. Klik op de pagina Data factory op de tegel Controleren en beheren.

    Tegel Bewaking en Beheer

  5. De Data-Integratie-toepassing wordt gestart op een afzonderlijk tabblad. U kunt alle pijplijnuitvoeringen en hun statussen zien. Merk op dat in het volgende voorbeeld de status van de pijplijnuitvoering Geslaagd is. U kunt parameters controleren die zijn doorgegeven aan de pijplijn door te klikken op de kolom Parameters. Als er een fout is, ziet u een koppeling in de fout-kolom. Klik op de koppeling in de kolom Acties.

    Schermopname van pijplijnuitvoeringen voor een gegevensfabriek.

  6. Wanneer u klikt op de koppeling in de kolom acties ziet u de volgende pagina met alle activiteiten bij uitvoering voor de pijplijn.

    Schermopname toont activiteitsuitvoeringen voor een data factory met de link Pipelines gemarkeerd.

  7. Om terug te schakelen naar de weergave Pipeline-uitvoeringen, klikt u op Pijplijn zoals weergegeven in de afbeelding.

De resultaten bekijken

U ziet u een bestand met de naam incremental-<GUID>.txt in de incchgtracking map van de adftutorial container.

Uitvoerbestand van volledige kopie

Het bestand moet de gegevens van uw database bevatten:

1,aaaa,21
2,bbbb,24
3,cccc,20
4,dddd,26
5,eeee,22

Meer gegevens toevoegen aan de brontabellen

Voer de volgende query uit op uw database om een rij toe te voegen en een rij bij te werken.

INSERT INTO data_source_table
(PersonID, Name, Age)
VALUES
(6, 'new','50');


UPDATE data_source_table
SET [Age] = '10', [name]='update' where [PersonID] = 1

Een pijplijn voor de delta-kopie maken

In deze stap maakt u een pijplijn met de volgende activiteiten en laat deze periodiek uitvoeren. De lookup-activiteiten het oude en nieuwe SYS_CHANGE_VERSION ophalen uit Azure SQL Database en doorgeven aan kopieeractiviteit. De copy-activiteit kopieert de ingevoegde/bijgewerkte/verwijderde gegevens tussen de twee SYS_CHANGE_VERSION waarden van Azure SQL Database naar Azure Blob Storage. De opgeslagen procedure-activiteit werkt de waarde van SYS_CHANGE_VERSION bij voor de volgende pijplijnuitvoering.

  1. Maak een JSON-bestand: IncrementalCopyPipeline.json in dezelfde map met de volgende inhoud:

    {
        "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. Voer de cmdlet Set-AzDataFactoryV2Pipeline uit om de pijplijn te maken: FullCopyPipeline.

     Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IncrementalCopyPipeline" -File ".\IncrementalCopyPipeline.json"
    

    Hier volgt een voorbeeld van uitvoer:

     PipelineName      : IncrementalCopyPipeline
     ResourceGroupName : ADFTutorialResourceGroup
     DataFactoryName   : IncCopyChgTrackingDF
     Activities        : {LookupLastChangeTrackingVersionActivity, LookupCurrentChangeTrackingVersionActivity, IncrementalCopyActivity, StoredProceduretoUpdateChangeTrackingActivity}
     Parameters        :
    

Voer de incrementele kopieer pijplijn uit

Voer de pijplijn uit: IncrementalCopyPipeline met behulp van de cmdlet Invoke-AzDataFactoryV2Pipeline .

Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroup $resourceGroupName -dataFactoryName $dataFactoryName     

De incrementele kopie pijplijn monitoren

  1. Ververs in de Data Integration Application de weergave pijplijnuitvoeringen. Controleer of u de IncrementalCopyPipeline in de lijst ziet. Klik op de koppeling in de kolom Acties.

    Schermopname toont uitvoeringen van pijplijnen voor een gegevensfabriek, inclusief uw pijplijn.

  2. Wanneer u klikt op de koppeling in de kolom acties ziet u de volgende pagina met alle activiteiten bij uitvoering voor de pijplijn.

    Schermopname van pijplijnuitvoeringen voor een data factory waarin meerdere uitvoeringen zijn gemarkeerd als geslaagd.

  3. Om terug te schakelen naar de weergave Pipeline-uitvoeringen, klikt u op Pijplijn zoals weergegeven in de afbeelding.

De resultaten bekijken

U ziet u het tweede bestand in de incchgtracking map van de adftutorial container.

Uitvoerbestand van een incrementele kopie

Het bestand mag alleen de deltagegevens van uw database bevatten. De record met U is de bijgewerkte rij in de database en I is de toegevoegde rij.

1,update,10,2,U
6,new,50,1,I

De eerste drie kolommen zijn gewijzigde gegevens van data_source_table. De laatste twee kolommen zijn de metagegevens van de tabel van het systeem voor het bijhouden van wijzigingen. De vierde kolom is de SYS_CHANGE_VERSION voor elke gewijzigde rij. De vijfde kolom is de bewerking: U = update, I = invoegen. Zie voor meer informatie over de traceringsgegevens CHANGETABLE.

==================================================================
PersonID Name    Age    SYS_CHANGE_VERSION    SYS_CHANGE_OPERATION
==================================================================
1        update  10            2                                 U
6        new     50            1                                 I

Ga naar de volgende zelfstudie voor meer informatie over het kopiëren van nieuwe en gewijzigde bestanden alleen op basis van hun LastModifiedDate: