Bagikan melalui


Memuat data secara bertambah bertahap dari Azure SQL Database ke penyimpanan Azure Blob menggunakan PowerShell

BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Dalam tutorial ini, Anda akan menggunakan Azure Data Factory untuk membuat alur yang memuat data delta dari tabel di Azure SQL Database ke penyimpanan Azure Blob.

Anda akan melakukan langkah-langkah berikut dalam tutorial ini:

  • Siapkan penyimpanan data untuk menyimpan nilai marka air.
  • Membuat pabrik data.
  • Membuat layanan tertaut.
  • Buat himpunan data sumber, sink, dan marka air.
  • Buat alur.
  • Jalankan alur.
  • Pantau eksekusi alur.

Gambaran Umum

Berikut adalah diagram solusi tingkat tinggi:

Memuat data secara bertahap

Berikut adalah langkah-langkah penting untuk membuat solusi ini:

  1. Pilih kolom marka air. Pilih satu kolom di penyimpanan data sumber, yang dapat digunakan untuk memotong rekaman baru atau yang diperbarui untuk setiap eksekusi. Biasanya, data di kolom yang dipilih ini (misalnya, last_modify_time atau ID) terus meningkat saat baris dibuat atau diperbarui. Nilai maksimum dalam kolom ini digunakan sebagai marka air.

  2. Siapkan penyimpanan data untuk menyimpan nilai marka air.
    Dalam tutorial ini, Anda akan menyimpan nilai marka air dalam database SQL.

  3. Buat alur dengan alur kerja berikut:

    Alur dalam solusi ini memiliki aktivitas berikut:

    • Buat dua aktivitas Pencarian. Gunakan aktivitas Pencarian pertama untuk mengambil nilai marka air terakhir. Gunakan aktivitas Pencarian kedua untuk mengambil nilai marka air baru. Nilai marka air ini diteruskan ke aktivitas Salin.
    • Buat aktivitas Copy yang menyalin baris dari penyimpanan data sumber dengan nilai kolom marka air yang lebih besar dari nilai marka air lama dan kurang dari nilai marka air baru. Kemudian, aktivitas ini akan menyalin data delta dari penyimpanan data sumber ke penyimpanan Blob sebagai file baru.
    • Buat aktivitas StoredProcedure yang memperbarui nilai marka air untuk alur yang berjalan selanjutnya.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Prasyarat

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

  • Microsoft Azure SQL database. Anda menggunakan database sebagai penyimpanan data sumber. Jika Anda tidak memiliki database di Azure SQL Database, lihat Membuat database di Azure SQL Database untuk mengetahui langkah-langkah membuatnya.
  • Azure Storage. Anda menggunakan penyimpanan blob sebagai penyimpanan data sink. Jika Anda tidak memiliki akun penyimpanan, lihat Membuat akun penyimpanan untuk mengetahui langkah-langkah membuatnya. Buat kontainer dengan nama adftutorial.
  • Azure PowerShell. Ikuti instruksi di Menginstal dan mengonfigurasi Azure PowerShell.

Membuat tabel sumber data di database SQL Anda

  1. Buka SQL Server Management Studio. Di Server Explorer, klik kanan database, dan pilih Kueri Baru.

  2. Jalankan perintah SQL berikut terhadap database SQL untuk membuat tabel bernama data_source_table sebagai penyimpanan sumber data:

    create table data_source_table
    (
        PersonID int,
        Name varchar(255),
        LastModifytime datetime
    );
    
    INSERT INTO data_source_table
    (PersonID, Name, LastModifytime)
    VALUES
    (1, 'aaaa','9/1/2017 12:56:00 AM'),
    (2, 'bbbb','9/2/2017 5:23:00 AM'),
    (3, 'cccc','9/3/2017 2:36:00 AM'),
    (4, 'dddd','9/4/2017 3:21:00 AM'),
    (5, 'eeee','9/5/2017 8:06:00 AM');
    

    Dalam tutorial ini, Anda menggunakan LastModifytime sebagai kolom marka air. Data di penyimpanan sumber data diperlihatkan dalam tabel berikut:

    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
    

Membuat tabel lain di database SQL Anda untuk menyimpan nilai marka air yang tinggi

  1. Jalankan perintah SQL berikut terhadap database SQL Anda untuk membuat tabel bernama watermarktable guna menyimpan nilai marka air:

    create table watermarktable
    (
    
    TableName varchar(255),
    WatermarkValue datetime,
    );
    
  2. Atur nilai default marka air tinggi dengan nama tabel penyimpanan data sumber. Dalam tutorial ini, nama tabel adalah data_source_table.

    INSERT INTO watermarktable
    VALUES ('data_source_table','1/1/2010 12:00:00 AM')    
    
  3. Tinjau data dalam tabel watermarktable.

    Select * from watermarktable
    

    Output:

    TableName  | WatermarkValue
    ----------  | --------------
    data_source_table | 2010-01-01 00:00:00.000
    

Membuat prosedur tersimpan di database SQL Anda

Jalankan perintah berikut ini untuk membuat prosedur tersimpan di database SQL Anda:

CREATE PROCEDURE usp_write_watermark @LastModifiedtime datetime, @TableName varchar(50)
AS

BEGIN

UPDATE watermarktable
SET [WatermarkValue] = @LastModifiedtime
WHERE [TableName] = @TableName

END

Membuat pabrik data

  1. Tentukan variabel untuk nama grup sumber daya yang Anda gunakan di perintah PowerShell nanti. Salin teks perintah berikut ke PowerShell, tentukan nama untuk grup sumber daya Azure dalam tanda kutip ganda, lalu jalankan perintah. Contohnya "adfrg".

    $resourceGroupName = "ADFTutorialResourceGroup";
    

    Jika grup sumber daya sudah ada, Anda mungkin tidak ingin menimpanya. Tetapkan nilai yang berbeda ke variabel $resourceGroupName, lalu jalankan perintah lagi.

  2. Tentukan variabel untuk lokasi pabrik data.

    $location = "East US"
    
  3. Untuk membuat grup sumber daya Azure, jalankan perintah berikut:

    New-AzResourceGroup $resourceGroupName $location
    

    Jika grup sumber daya sudah ada, Anda mungkin tidak ingin menimpanya. Tetapkan nilai yang berbeda ke variabel $resourceGroupName, lalu jalankan perintah lagi.

  4. Tentukan variabel untuk nama pabrik data.

    Penting

    Perbarui nama pabrik data untuk menjadikannya unik secara global. Misalnya, ADFTutorialFactorySP1127.

    $dataFactoryName = "ADFIncCopyTutorialFactory";
    
  5. Untuk membuat pabrik data, jalankan cmdlet Set-AzDataFactoryV2 berikut:

    Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryName
    

Perhatikan poin berikut:

  • Nama pabrik data harus unik secara global. Jika Anda menerima kesalahan berikut, ubah nama dan coba lagi:

    The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.
    
  • Untuk membuat instans Data Factory, akun pengguna yang Anda gunakan untuk masuk ke Azure harus merupakan anggota dari peran kontributor atau pemilik, atau admin dari langganan Azure.

  • Untuk daftar wilayah Azure tempat Data Factory saat ini tersedia, pilih wilayah yang menarik minat Anda pada halaman berikut, lalu perluas Analitik untuk menemukan Data Factory: Produk yang tersedia menurut wilayah. Penyimpanan data (Storage, SQL Database, Azure SQL Managed Instance, dan lain-lain) dan komputasi (Azure HDInsight, dll.) yang digunakan pabrik data dapat berada di wilayah lain.

Membuat layanan tertaut

Anda membuat layanan tertaut di pabrik data untuk menautkan penyimpanan data dan layanan komputasi ke pabrik data. Di bagian ini, Anda akan membuat layanan tertaut ke akun penyimpanan dan SQL Database.

Membuat layanan tertaut Storage

  1. Buat file JSON bernama AzureStorageLinkedService.json di folder C:\ADF folder dengan konten berikut. (Buat folder ADF jika belum ada.) Ganti <accountName> dan <accountKey> dengan nama dan kunci akun penyimpanan sebelum Anda menyimpan file.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "type": "AzureStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>"
            }
        }
    }
    
  2. Di PowerShell, beralih ke folder ADF.

  3. Jalankan cmdlet Set-AzDataFactoryV2LinkedService untuk membuat layanan tertaut AzureStorageLinkedService. Dalam contoh berikut, Anda meneruskan nilai untuk parameter ResourceGroupName dan DataFactoryName:

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

    Berikut adalah output sampel:

    LinkedServiceName : AzureStorageLinkedService
    ResourceGroupName : <resourceGroupName>
    DataFactoryName   : <dataFactoryName>
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
    

Membuat layanan tertaut SQL Database

  1. Buat file JSON bernama AzureSQLDatabaseLinkedService.json di folder C:\ADF folder dengan konten berikut. (Buat folder ADF jika belum ada.) Ganti <server>, <database>, < id pengguna >, dan <kata sandi> dengan nama server, database, ID pengguna, dan kata sandi sebelum Anda menyimpan file.

    {
        "name": "AzureSQLDatabaseLinkedService",
        "properties": {
            "type": "AzureSqlDatabase",
            "typeProperties": {
                "connectionString": "Server = tcp:<server>.database.windows.net,1433;Initial Catalog=<database>; Persist Security Info=False; User ID=<user> ; Password=<password>; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False; Connection Timeout = 30;"
            }
        }
    }
    
  2. Di PowerShell, beralih ke folder ADF.

  3. Jalankan cmdlet Set-AzDataFactoryV2LinkedService untuk membuat layanan tertaut AzureSQLDatabaseLinkedService.

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

    Berikut adalah output sampel:

    LinkedServiceName : AzureSQLDatabaseLinkedService
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
    ProvisioningState :
    

Membuat himpunan data

Dalam langkah ini, Anda akan membuat himpunan data untuk mewakili data sumber dan sink.

Membuat himpunan data sumber

  1. Buat file JSON bernama SourceDataset.json di folder yang sama dengan konten berikut:

    {
        "name": "SourceDataset",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "data_source_table"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }
    
    

    Dalam tutorial ini, Anda akan menggunakan nama tabel data_source_table. Ganti jika Anda menggunakan tabel dengan nama yang berbeda.

  2. Jalankan cmdlet Set-AzDataFactoryV2Dataset untuk membuat himpunan data: SourceDataset.

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

    Berikut adalah output sampel dari cmdlet tersebut:

    DatasetName       : SourceDataset
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
    

Membuat himpunan data sink

  1. Buat file JSON bernama SinkDataset.json di folder yang sama dengan konten berikut:

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

    Penting

    Cuplikan ini menganggap bahwa Anda memiliki kontainer blob bernama adftutorial di penyimpanan blob. Buat kontainer jika tidak ada, atau atur ke nama kontainer yang sudah ada. Folder output incrementalcopy akan secara otomatis dibuat jika belum ada dalam kontainer. Dalam tutorial ini, nama file akan dibuat secara dinamis dengan menggunakan ekspresi @CONCAT('Incremental-', pipeline().RunId, '.txt').

  2. Jalankan cmdlet Set-AzDataFactoryV2Dataset untuk membuat himpunan data SinkDataset.

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

    Berikut adalah output sampel dari cmdlet tersebut:

    DatasetName       : SinkDataset
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureBlobDataset    
    

Membuat himpunan data untuk marka air

Dalam langkah ini, Anda akan membuat himpunan data untuk menyimpan nilai marka air yang tinggi.

  1. Buat file JSON bernama WatermarkDataset.json di folder yang sama dengan konten berikut:

    {
        "name": " WatermarkDataset ",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "watermarktable"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }    
    
  2. Jalankan cmdlet Set-AzDataFactoryV2Dataset untuk membuat himpunan data WatermarkDataset.

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

    Berikut adalah output sampel dari cmdlet tersebut:

    DatasetName       : WatermarkDataset
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset    
    

Buat alur

Dalam tutorial ini, Anda akan membuat alur dengan dua aktivitas Pencarian, satu aktivitas Salin, dan satu aktivitas StoredProcedure yang diikat dalam satu alur.

  1. Buat file JSON IncrementalCopyPipeline.json di folder yang sama dengan konten berikut:

    {
        "name": "IncrementalCopyPipeline",
        "properties": {
            "activities": [
                {
                    "name": "LookupOldWaterMarkActivity",
                    "type": "Lookup",
                    "typeProperties": {
                        "source": {
                        "type": "SqlSource",
                        "sqlReaderQuery": "select * from watermarktable"
                        },
    
                        "dataset": {
                        "referenceName": "WatermarkDataset",
                        "type": "DatasetReference"
                        }
                    }
                },
                {
                    "name": "LookupNewWaterMarkActivity",
                    "type": "Lookup",
                    "typeProperties": {
                        "source": {
                            "type": "SqlSource",
                            "sqlReaderQuery": "select MAX(LastModifytime) as NewWatermarkvalue from data_source_table"
                        },
    
                        "dataset": {
                        "referenceName": "SourceDataset",
                        "type": "DatasetReference"
                        }
                    }
                },
    
                {
                    "name": "IncrementalCopyActivity",
                    "type": "Copy",
                    "typeProperties": {
                        "source": {
                            "type": "SqlSource",
                            "sqlReaderQuery": "select * from data_source_table where LastModifytime > '@{activity('LookupOldWaterMarkActivity').output.firstRow.WatermarkValue}' and LastModifytime <= '@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}'"
                        },
                        "sink": {
                            "type": "BlobSink"
                        }
                    },
                    "dependsOn": [
                        {
                            "activity": "LookupNewWaterMarkActivity",
                            "dependencyConditions": [
                                "Succeeded"
                            ]
                        },
                        {
                            "activity": "LookupOldWaterMarkActivity",
                            "dependencyConditions": [
                                "Succeeded"
                            ]
                        }
                    ],
    
                    "inputs": [
                        {
                            "referenceName": "SourceDataset",
                            "type": "DatasetReference"
                        }
                    ],
                    "outputs": [
                        {
                            "referenceName": "SinkDataset",
                            "type": "DatasetReference"
                        }
                    ]
                },
    
                {
                    "name": "StoredProceduretoWriteWatermarkActivity",
                    "type": "SqlServerStoredProcedure",
                    "typeProperties": {
    
                        "storedProcedureName": "usp_write_watermark",
                        "storedProcedureParameters": {
                            "LastModifiedtime": {"value": "@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}", "type": "datetime" },
                            "TableName":  { "value":"@{activity('LookupOldWaterMarkActivity').output.firstRow.TableName}", "type":"String"}
                        }
                    },
    
                    "linkedServiceName": {
                        "referenceName": "AzureSQLDatabaseLinkedService",
                        "type": "LinkedServiceReference"
                    },
    
                    "dependsOn": [
                        {
                            "activity": "IncrementalCopyActivity",
                            "dependencyConditions": [
                                "Succeeded"
                            ]
                        }
                    ]
                }
            ]
    
        }
    }
    
  2. Jalankan cmdlet Set-AzDataFactoryV2Pipeline untuk membuat alur IncrementalCopyPipeline.

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

    Berikut adalah output sampel:

     PipelineName      : IncrementalCopyPipeline
     ResourceGroupName : ADF
     DataFactoryName   : incrementalloadingADF
     Activities        : {LookupOldWaterMarkActivity, LookupNewWaterMarkActivity, IncrementalCopyActivity, StoredProceduretoWriteWatermarkActivity}
     Parameters        :
    

Menjalankan alur

  1. Jalankan alur IncrementalCopyPipeline dengan menggunakan cmdlet Invoke-AzDataFactoryV2Pipeline. Ganti tempat penampung dengan grup sumber daya dan nama pabrik data Anda sendiri.

    $RunId = Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroupName $resourceGroupName -dataFactoryName $dataFactoryName
    
  2. Periksa status alur dengan menjalankan cmdlet Get-AzDataFactoryV2ActivityRun hingga Anda melihat semua aktivitas berjalan dengan baik. Ganti tempat penampung dengan waktu pilihan Anda untuk parameter RunStartedAfter dan RunStartedBefore. Dalam tutorial ini, Anda akan menggunakan -RunStartedAfter "2017/09/14" dan -RunStartedBefore "2017/09/15".

    Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $RunId -RunStartedAfter "<start time>" -RunStartedBefore "<end time>"
    

    Berikut adalah output sampel:

    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : LookupNewWaterMarkActivity
    PipelineRunId     : d4bf3ce2-5d60-43f3-9318-923155f61037
    PipelineName      : IncrementalCopyPipeline
    Input             : {source, dataset}
    Output            : {NewWatermarkvalue}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 7:42:42 AM
    ActivityRunEnd    : 9/14/2017 7:42:50 AM
    DurationInMs      : 7777
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : LookupOldWaterMarkActivity
    PipelineRunId     : d4bf3ce2-5d60-43f3-9318-923155f61037
    PipelineName      : IncrementalCopyPipeline
    Input             : {source, dataset}
    Output            : {TableName, WatermarkValue}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 7:42:42 AM
    ActivityRunEnd    : 9/14/2017 7:43:07 AM
    DurationInMs      : 25437
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : IncrementalCopyActivity
    PipelineRunId     : d4bf3ce2-5d60-43f3-9318-923155f61037
    PipelineName      : IncrementalCopyPipeline
    Input             : {source, sink}
    Output            : {dataRead, dataWritten, rowsCopied, copyDuration...}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 7:43:10 AM
    ActivityRunEnd    : 9/14/2017 7:43:29 AM
    DurationInMs      : 19769
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : StoredProceduretoWriteWatermarkActivity
    PipelineRunId     : d4bf3ce2-5d60-43f3-9318-923155f61037
    PipelineName      : IncrementalCopyPipeline
    Input             : {storedProcedureName, storedProcedureParameters}
    Output            : {}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 7:43:32 AM
    ActivityRunEnd    : 9/14/2017 7:43:47 AM
    DurationInMs      : 14467
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    

Meninjau hasil

  1. Di penyimpanan blob (penyimpanan sink), Anda akan melihat bahwa data disalin ke file yang ditentukan dalam SinkDataset. Dalam tutorial saat ini, nama file adalah Incremental- d4bf3ce2-5d60-43f3-9318-923155f61037.txt. Buka file tersebut, dan Anda dapat melihat rekaman dalam file yang sama dengan data dalam database SQL.

    1,aaaa,2017-09-01 00:56:00.0000000
    2,bbbb,2017-09-02 05:23:00.0000000
    3,cccc,2017-09-03 02:36:00.0000000
    4,dddd,2017-09-04 03:21:00.0000000
    5,eeee,2017-09-05 08:06:00.0000000
    
  2. Periksa nilai terbaru dari watermarktable. Anda melihat nilai marka air sudah diperbarui.

    Select * from watermarktable
    

    Berikut adalah output sampel:

    TableName WatermarkValue
    data_source_table 2017-09-05 8:06:00.000

Menyisipkan data ke dalam penyimpanan sumber data untuk memverifikasi pemuatan data delta

  1. Sisipkan data baru ke database SQL (penyimpanan sumber data).

    INSERT INTO data_source_table
    VALUES (6, 'newdata','9/6/2017 2:23:00 AM')
    
    INSERT INTO data_source_table
    VALUES (7, 'newdata','9/7/2017 9:01:00 AM')
    

    Data yang diperbarui dalam database SQL adalah:

    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 | newdata | 2017-09-06 02:23:00.000
    7 | newdata | 2017-09-07 09:01:00.000
    
  2. Jalankan alur IncrementalCopyPipeline lagi dengan menggunakan cmdlet Invoke-AzDataFactoryV2Pipeline. Ganti tempat penampung dengan grup sumber daya dan nama pabrik data Anda sendiri.

    $RunId = Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroupName $resourceGroupName -dataFactoryName $dataFactoryName
    
  3. Periksa status alur dengan menjalankan cmdlet Get-AzDataFactoryV2ActivityRun hingga Anda melihat semua aktivitas berjalan dengan baik. Ganti tempat penampung dengan waktu pilihan Anda untuk parameter RunStartedAfter dan RunStartedBefore. Dalam tutorial ini, Anda akan menggunakan -RunStartedAfter "2017/09/14" dan -RunStartedBefore "2017/09/15".

    Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $RunId -RunStartedAfter "<start time>" -RunStartedBefore "<end time>"
    

    Berikut adalah output sampel:

    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : LookupNewWaterMarkActivity
    PipelineRunId     : 2fc90ab8-d42c-4583-aa64-755dba9925d7
    PipelineName      : IncrementalCopyPipeline
    Input             : {source, dataset}
    Output            : {NewWatermarkvalue}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 8:52:26 AM
    ActivityRunEnd    : 9/14/2017 8:52:58 AM
    DurationInMs      : 31758
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : LookupOldWaterMarkActivity
    PipelineRunId     : 2fc90ab8-d42c-4583-aa64-755dba9925d7
    PipelineName      : IncrementalCopyPipeline
    Input             : {source, dataset}
    Output            : {TableName, WatermarkValue}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 8:52:26 AM
    ActivityRunEnd    : 9/14/2017 8:52:52 AM
    DurationInMs      : 25497
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : IncrementalCopyActivity
    PipelineRunId     : 2fc90ab8-d42c-4583-aa64-755dba9925d7
    PipelineName      : IncrementalCopyPipeline
    Input             : {source, sink}
    Output            : {dataRead, dataWritten, rowsCopied, copyDuration...}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 8:53:00 AM
    ActivityRunEnd    : 9/14/2017 8:53:20 AM
    DurationInMs      : 20194
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    ResourceGroupName : ADF
    DataFactoryName   : incrementalloadingADF
    ActivityName      : StoredProceduretoWriteWatermarkActivity
    PipelineRunId     : 2fc90ab8-d42c-4583-aa64-755dba9925d7
    PipelineName      : IncrementalCopyPipeline
    Input             : {storedProcedureName, storedProcedureParameters}
    Output            : {}
    LinkedServiceName :
    ActivityRunStart  : 9/14/2017 8:53:23 AM
    ActivityRunEnd    : 9/14/2017 8:53:41 AM
    DurationInMs      : 18502
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    
  4. Dalam penyimpanan blob, Anda melihat file lain dibuat. Dalam tutorial ini, nama file baru tersebut adalah Incremental-2fc90ab8-d42c-4583-aa64-755dba9925d7.txt. Buka file tersebut, dan Anda akan melihat dua baris rekaman di dalamnya.

  5. Periksa nilai terbaru dari watermarktable. Anda melihat nilai marka air telah diperbarui kembali.

    Select * from watermarktable
    

    sampel output:

    TableName WatermarkValue
    data_source_table 2017-09-07 09:01:00.000

Anda melakukan langkah-langkah berikut dalam tutorial ini:

  • Siapkan penyimpanan data untuk menyimpan nilai marka air.
  • Membuat pabrik data.
  • Membuat layanan tertaut.
  • Buat himpunan data sumber, sink, dan marka air.
  • Buat alur.
  • Jalankan alur.
  • Pantau eksekusi alur.

Dalam tutorial ini, alur menyalin data dari satu tabel di Azure SQL Database ke penyimpanan Blob. Lanjutkan ke tutorial berikut untuk mempelajari cara menyalin data dari beberapa tabel dalam database SQL Server ke Azure SQL Database.