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

Azure Data Factory Azure Synapse Analytics

Petunjuk

Data Factory di Microsoft Fabric adalah generasi Azure Data Factory berikutnya, dengan arsitektur yang lebih sederhana, AI bawaan, dan fitur baru. Jika Anda baru menggunakan integrasi data, mulailah dengan Fabric Data Factory. Beban kerja ADF yang ada dapat ditingkatkan ke Fabric untuk mengakses kemampuan baru di seluruh ilmu data, analitik real time, dan pelaporan.

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

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, tujuan, dan penanda.
  • Buat pipa saluran.
  • Jalankan alur kerja.
  • 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 tanda air. Pilih satu kolom di penyimpanan data sumber yang dapat digunakan untuk mengiris rekaman baru atau yang diperbarui untuk setiap pemrosesan. 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 tanda.

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

  3. Buat alur dengan alur kerja berikut:

    Alur dalam solusi ini memiliki aktivitas berikut:

    • Buat dua aktivitas Pencarian. Gunakan aktivitas Lookup pertama untuk memperoleh nilai tanda waktu terakhir. Gunakan aktivitas Lookup kedua untuk mengambil nilai penanda baru. Nilai tanda air ini diteruskan ke aktivitas penyalinan.
    • Buat aktivitas Salin yang menyalin baris dari penyimpanan data asal dengan nilai kolom marka air yang lebih besar dari nilai marka air lama dan kurang dari atau sama dengan nilai marka air baru. Kemudian, menyalin data delta dari penyimpanan data sumber ke penyimpanan Blob sebagai file baru.
    • Buat aktivitas StoredProcedure yang memperbarui nilai watermark untuk alur kerja yang akan berjalan berikutnya.

Jika Anda tidak memiliki langganan Azure, buat akun free sebelum Memulai.

Prasyarat

Catatan

Kami menyarankan agar Anda menggunakan modul Az PowerShell Azure untuk berinteraksi dengan Azure. Untuk memulai, lihat Install Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Migrasikan Azure PowerShell dari AzureRM ke Az.

  • Azure SQL Database. Anda menggunakan database sebagai penyimpanan data sumber. Jika Anda tidak memiliki database di Azure SQL Database, lihat Buat database di Azure SQL Database untuk 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 Install dan konfigurasikan 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 penanda waktu. 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
    

Buat tabel lain di database SQL Anda untuk menyimpan nilai penanda batas atas

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

    create table watermarktable
    (
    
    TableName varchar(255),
    WatermarkValue datetime,
    );
    
  2. Atur nilai default watermark tinggi dengan nama tabel 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
    

    Keluaran

    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 menimpa atau menggantinya. 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 menimpa atau menggantinya. 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 menjadi anggota peran kontributor atau pemilik, atau administrator langganan Azure.

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

Membuat layanan terhubung

Anda membuat layanan tertaut di pabrik data untuk menautkan penyimpanan data dan layanan komputasi ke pabrik data. Di bagian ini, Anda membuat layanan yang ditautkan 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 terkait basis data SQL

  1. Buat file JSON bernama AzureSQLDatabaseLinkedService.json di folder C:\ADF folder dengan konten berikut. (Buat folder ADF jika belum ada.) Ganti <nama server-Anda dan >nama-database-Anda<> dengan nama server dan database Anda sebelum Anda menyimpan file. Anda juga harus mengonfigurasi SQL Server Azure anda untuk ses ke identitas terkelola pabrik data Anda.

    {
    "name": "AzureSqlDatabaseLinkedService",
    "properties": {
            "type": "AzureSqlDatabase",
            "typeProperties": {
                "connectionString": "Server=tcp:<your-server-name>.database.windows.net,1433;Database=<your-database-name>;"
            },
            "authenticationType": "ManagedIdentity",
            "annotations": []
        }
    }
    
  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 berasumsi 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 tanda 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 membuat alur dengan dua aktivitas Pencarian, satu Copy activity, dan satu aktivitas StoredProcedure yang ditautkan 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 placeholder dengan waktu yang sesuai 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 tanda air sudah diperbarui.

    Select * from watermarktable
    

    Berikut adalah output sampel:

    TableName WatermarkValue
    tabel_sumber_data 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 placeholder dengan waktu yang sesuai 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 bahwa file lain telah 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 bahwa nilai tanda air telah diperbarui.

    Select * from watermarktable
    

    sampel keluaran:

    TableName WatermarkValue
    tabel_sumber_data 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, tujuan, dan penanda.
  • Buat pipa saluran.
  • Jalankan alur kerja.
  • Pantau eksekusi alur.

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