Delta menyalin dari database dengan tabel kontrol

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!

Artikel ini menguraikan templat yang tersedia untuk memuat baris baru atau yang diperbarui secara bertahap dari tabel database ke Azure dengan menggunakan tabel kontrol eksternal yang menyimpan nilai marka air tinggi.

Templat ini mengharuskan skema database sumber berisi kolom tanda waktu atau kunci penambahan untuk mengidentifikasi baris baru atau yang diperbarui.

Catatan

Jika Anda memiliki kolom tanda waktu di database sumber Anda untuk mengidentifikasi baris baru atau yang diperbarui tetapi Anda tidak ingin membuat tabel kontrol eksternal untuk digunakan untuk penyalinan delta, Anda bisa menggunakan alat Data Penyalinan Azure Data Factory untuk mendapatkan alur. Alat itu menggunakan pemicu waktu terjadwal sebagai variabel untuk membaca baris baru dari database sumber.

Tentang templat solusi ini

Templat ini pertama kali mengambil nilai marka air lama dan membandingkannya dengan nilai marka air saat ini. Setelah itu, hanya menyalin perubahan dari database sumber, berdasarkan perbandingan antara dua nilai marka air. Akhirnya, ia menyimpan nilai marka air tinggi baru ke tabel kontrol eksternal untuk pemuatan data delta lain kali.

Templat berisi empat aktivitas:

  • Pencarian mengambil nilai marka air tinggi yang lama, yang disimpan dalam tabel kontrol eksternal.
  • Aktivitas Pencarian lain mengambil nilai marka air tinggi saat ini dari database sumber.
  • Menyalin hanya menyalin berubah dari database sumber ke penyimpanan tujuan. Kueri yang mengidentifikasi perubahan dalam database sumber mirip dengan 'SELECT * FROM Data_Source_Table WHERE TIMESTAMP_Column > “last high-watermark” dan TIMESTAMP_Column <= “current high-watermark”'.
  • SqlServerStoredProcedure menulis nilai marka air tinggi saat ini ke tabel kontrol eksternal untuk penyalinan delta lain kali.

Templat menentukan parameter berikut:

  • Data_Source_Table_Name adalah tabel dalam database sumber tempat Anda ingin memuat data.
  • Data_Source_WaterMarkColumn adalah nama kolom dalam tabel sumber yang digunakan untuk mengidentifikasi baris baru atau yang diperbarui. Jenis kolom ini biasanya tanggalwaktu, INT, atau sejenisnya.
  • Data_Destination_Container adalah jalur akar tempat data disalin di penyimpanan tujuan Anda.
  • Data_Destination_Directory adalah jalur direktori di bawah akar tempat data disalin di penyimpanan tujuan Anda.
  • Data_Destination_Table_Name adalah tempat di mana data disalin di penyimpanan tujuan Anda (berlaku saat "Azure Synapse Analytics" dipilih sebagai Tujuan Data).
  • Data_Destination_Folder_Path adalah tempat di mana data disalin di penyimpanan tujuan Anda (berlaku saat "Sistem File" atau "Azure Data Lake Storage Gen1" dipilih sebagai Tujuan Data).
  • Control_Table_Table_Name adalah tabel kontrol eksternal yang menyimpan nilai marka air tinggi.
  • Control_Table_Column_Name adalah kolom dalam tabel kontrol eksternal yang menyimpan nilai marka air tinggi.

Cara menggunakan templat solusi ini

  1. Jelajahi tabel sumber yang ingin Anda muat, dan tentukan kolom marka air tinggi yang bisa digunakan untuk mengidentifikasi baris baru atau yang diperbarui. Jenis kolom ini mungkin tanggalwaktu, INT, atau sejenisnya. Nilai kolom ini meningkat saat baris baru ditambahkan. Dari contoh tabel sumber berikut (data_source_table), kita bisa menggunakan kolom LastModifytime sebagai kolom marka air tinggi.

    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           fffffff         2017-09-06 02:23:00.000
    7           gggg            2017-09-07 09:01:00.000
    8           hhhh            2017-09-08 09:01:00.000
    9           iiiiiiiii       2017-09-09 09:01:00.000
    
  2. Buat tabel kontrol di SQL Server atau Azure SQL Database untuk menyimpan nilai marka air tinggi untuk pemuatan data delta. Dalam contoh berikut, nama tabel kontrol adalah watermarktable. Dalam tabel ini, WatermarkValue adalah kolom yang menyimpan nilai marka air tinggi, dan jenisnya adalah tanggalwaktu.

    create table watermarktable
    (
    WatermarkValue datetime,
    );
    INSERT INTO watermarktable
    VALUES ('1/1/2010 12:00:00 AM')
    
  3. Buat prosedur yang disimpan dalam instans SQL Server atau Azure SQL Database yang Anda gunakan untuk membuat tabel kontrol. Prosedur yang disimpan digunakan untuk menulis nilai marka air tinggi baru ke tabel kontrol eksternal untuk pemuatan data delta lain kali.

    CREATE PROCEDURE update_watermark @LastModifiedtime datetime
    AS
    
    BEGIN
    
        UPDATE watermarktable
        SET [WatermarkValue] = @LastModifiedtime 
    
    END
    
  4. Buka Penyalinan delta dari templat Database. Buat koneksi Baru ke database sumber yang ingin Anda salin datanya.

    Screenshot showing the creation of a new connection to the source table.

  5. Buat koneksi Baru ke penyimpanan data tujuan tempat Anda ingin menyalin data.

    Screenshot showing the creation of a new connection to the destination table.

  6. Buat koneksi Baru ke tabel kontrol eksternal dan prosedur tersimpan yang Anda buat di langkah 2 dan 3.

    Screenshot showing the creation of a new connection to the control table data store.

  7. Pilih Gunakan templat ini.

  8. Anda melihat alur yang tersedia, seperti yang diperlihatkan dalam contoh berikut:

    Screenshot showing the pipeline.

  9. Pilih Prosedur Tersimpan. Untuk Nama prosedur tersimpan, pilih [dbo].[ update_watermark]. Pilih Impor parameter, lalu pilih Tambahkan konten dinamis.

    Screenshot showing where to set the stored procedure activity.

  10. Tulis konten @{activity('LookupCurrentWaterMark').output.firstRow.NewWatermarkValue}, lalu pilih Selesai.

    Screenshot showing where to write the content for the parameters of the stored procedure.

  11. Pilih Debug, masukkan Parameter, lalu pilih Selesai.

    Screenshot showing the Debug button.

  12. Hasil yang mirip dengan contoh berikut ditampilkan:

    Sreenshot showing the result of the pipeline run.

  13. Anda bisa membuat baris baru di tabel sumber Anda. Berikut adalah contoh bahasa SQL untuk membuat baris baru:

    INSERT INTO data_source_table
    VALUES (10, 'newdata','9/10/2017 2:23:00 AM')
    
    INSERT INTO data_source_table
    VALUES (11, 'newdata','9/11/2017 9:01:00 AM')
    
  14. Untuk menjalankan alur lagi, pilih Debug, masukkan Parameter, lalu pilih Selesai.

    Anda akan melihat bahwa hanya baris baru yang disalin ke tujuan.

  15. (Opsional:) Jika Anda memilih Azure Synapse Analytics sebagai tujuan data, Anda juga harus menyediakan koneksi ke penyimpanan Blob Azure untuk pementasan, yang diperlukan oleh Azure Synapse Analytics Polybase. Templat akan menghasilkan jalur kontainer untuk Anda. Setelah alur berjalan, periksa apakah kontainer telah dibuat di penyimpanan Blob.

    Screenshot showing where to configure Polybase.