Bagikan melalui


Membangun alur salinan data skala besar dengan pendekatan berbasis metadata di alat data penyalinan

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!

Ketika Anda ingin menyalin objek dalam jumlah besar (misalnya, ribuan tabel) atau memuat data dari berbagai sumber, pendekatan yang tepat adalah memasukkan daftar nama objek dengan perilaku salinan yang diperlukan dalam tabel kontrol, lalu menggunakan alur parameter untuk membacanya dari tabel kontrol dan menerapkannya pada pekerjaan yang sesuai. Dengan demikian, Anda dapat mempertahankan (misalnya, menambahkan/menghapus) daftar objek yang akan disalin dengan mudah hanya dengan memperbarui nama objek dalam tabel kontrol, bukan menyebarkan ulang alur. Terlebih lagi, Anda akan memiliki satu tempat untuk memeriksa dengan mudah objek mana yang disalin oleh alur/pemicu tertentu dengan perilaku salinan yang ditentukan.

Menyalin alat data di ADF mempermudah perjalanan membangun alur salinan data berbasis metadata tersebut. Setelah Anda melalui alur intuitif dari pengalaman berbasis wizard, alat ini dapat menghasilkan alur parameter dan skrip SQL untuk Anda guna membuat tabel kontrol eksternal yang sesuai. Setelah Anda menjalankan skrip yang dihasilkan untuk membuat tabel kontrol di database SQL Anda, jaringan alur Anda akan membaca metadata dari tabel kontrol dan menerapkannya pada pekerjaan salinan secara otomatis.

Membuat pekerjaan salinan berbasis metadata dari alat salin data

  1. Pilih Tugas salinan berbasis metadata di alat data penyalinan.

    Anda perlu memasukkan koneksi dan nama tabel kontrol Anda, sehingga alur yang dihasilkan akan membaca metadata dari tabel tersebut.

    Memilih jenis tugas

  2. Masukkan koneksi database sumber Anda. Anda juga dapat menggunakan layanan tertaut dalam parameter.

    Memilih layanan tertaut dalam parameter

  3. Pilih nama tabel untuk disalin.

    Memilih tabel

    Catatan

    Jika Anda memilih penyimpanan data tabular, Anda akan memiliki kesempatan untuk memilih lebih lanjut baik beban penuh atau beban delta di halaman berikutnya. Jika Anda memilih penyimpanan Storage, Anda dapat memilih beban penuh lebih lanjut hanya di halaman berikutnya. Memuat file baru secara bertahap hanya dari penyimpanan Storage, saat ini tidak didukung.

  4. Pilih perilaku pemuatan.

    Tip

    Jika Anda ingin melakukan salinan lengkap pada semua tabel, pilih Muat lengkap semua tabel. Jika ingin melakukan salinan bertambah bertahap, Anda dapat memilih konfigurasi tiap tabel satu per satu, dan pilih pemuatan Delta serta nama dan nilai kolom marka air untuk memulai tiap tabel.

  5. Pilih Penyimpanan data tujuan.

  6. Di halaman Pengaturan, Anda dapat menentukan jumlah maksimum aktivitas salinan untuk menyalin data dari penyimpanan sumber secara bersamaan melalui Jumlah tugas salinan bersamaan. Nilai default adalah 20.

    Halaman pengaturan

  7. Setelah penyebaran alur, Anda dapat menyalin atau mengunduh skrip SQL dari antarmuka pengguna untuk membuat tabel kontrol dan prosedur penyimpanan.

    Mengunduh skrip

    Anda akan melihat dua skrip SQL.

    • Skrip SQL pertama digunakan untuk membuat dua tabel kontrol. Tabel kontrol utama menyimpan daftar tabel, jalur file, atau perilaku salin. Tabel kontrol koneksi menyimpan nilai koneksi penyimpanan data Anda jika Anda menggunakan layanan tertaut dalam parameter.
    • Skrip SQL kedua digunakan untuk membuat prosedur penyimpanan. Skrip ini digunakan untuk memperbarui nilai marka air di tabel kontrol utama ketika pekerjaan salin bertambah bertahap selesai setiap saat.
  8. Buka SQL Server Management Studio untuk menyambungkan ke server tabel kontrol Anda, dan jalankan dua skrip SQL untuk membuat tabel kontrol dan prosedur penyimpanan.

    Membuat skrip tabel kontrol

  9. Lakukan kueri pada tabel kontrol utama dan tabel kontrol koneksi untuk meninjau metadata di dalamnya.

    Tabel kontrol utamaSkrip tabel kontrol kueri1

    Tabel kontrol koneksiSkrip tabel kontrol kueri2

  10. Kembali ke portal ADF untuk melihat dan men-debug alur. Anda akan melihat sebuah folder dibuat dengan nama "MetadataDrivenCopyTask_#########". Klik alur dengan nama "MetadataDrivenCopyTask###_TopLevel" dan klik jalankan debug.

    Anda diharuskan untuk memasukkan parameter berikut:

    Nama parameter Deskripsi
    MaxNumberOfConcurrentTasks Anda selalu dapat mengubah jumlah maksimum aktivitas salinan bersamaan yang dijalankan sebelum alur berjalan. Nilai default adalah nilai yang Anda masukkan dalam alat data penyalinan.
    MainControlTableName Anda selalu dapat mengubah nama tabel kontrol utama, sehingga alur akan mendapatkan metadata dari tabel tersebut sebelum dijalankan.
    ConnectionControlTableName Anda selalu dapat mengubah nama tabel kontrol koneksi (opsional), sehingga alur akan mendapatkan metadata yang terkait dengan koneksi penyimpanan data tersebut sebelum dijalankan.
    MaxNumberOfObjectsReturnedFromLookupActivity Untuk menghindari mencapai batas aktivitas pencarian output, ada cara untuk menentukan jumlah maksimum objek yang ditampilkan dengan aktivitas pencarian. Dalam kebanyakan kasus, nilai default tidak perlu diubah.
    windowStart Ketika Anda memasukkan nilai dinamis (misalnya, tttt/bb/hh) sebagai jalur folder, parameter digunakan untuk melewati waktu pemicu saat ini ke alur untuk mengisi jalur folder dinamis. Ketika alur dipicu oleh pemicu jadwal atau pemicu jendela yang jatuh, pengguna tidak perlu memasukkan nilai parameter ini. Nilai sampel: 2021-01-25T01:49:28Z
  11. Aktifkan pemicu untuk mengoperasionalkan alur.

    Aktifkan pemicu

Memperbarui tabel kontrol dengan alat data penyalinan

Anda selalu dapat langsung memperbarui tabel kontrol dengan menambahkan atau menghapus objek untuk disalin atau mengubah perilaku salin untuk setiap tabel. Kami juga membuat pengalaman UI dalam menyalin alat data untuk memudahkan proses mengedit tabel kontrol.

  1. Klik kanan alur tingkat atas: MetadataDrivenCopyTask_xxx_TopLevel, lalu pilih Edit tabel kontrol.

    Mengedit tabel kontrol1

  2. Pilih baris dari tabel kontrol untuk diedit.

    Mengedit tabel kontrol2

  3. Telusuri throughput alat data penyalinan, dan akan muncul skrip SQL baru untuk Anda. Jalankan kembali skrip SQL untuk memperbarui tabel kontrol Anda.

    Mengedit tabel kontrol3

    Catatan

    Alur TIDAK akan disebarkan ulang. Skrip SQL yang baru dibuat membantu Anda memperbarui tabel kontrol saja.

Tabel kontrol

Tabel kontrol utama

Setiap baris dalam tabel kontrol berisi metadata untuk satu objek (misalnya, satu tabel) yang akan disalin.

Nama kolom Deskripsi
ID ID unik dari objek yang akan disalin.
SourceObjectSettings Metadata himpunan data sumber. Ini bisa jadi nama skema, nama tabel, dll. Berikut adalah contoh.
SourceConnectionSettingsName Nama pengaturan koneksi sumber dalam tabel kontrol koneksi. Ini opsional.
CopySourceSettings Metadata properti sumber dalam aktivitas salin. Dapat berbentuk kueri, partisi, dll. Berikut adalah contoh.
SinkObjectSettings Metadata himpunan data tujuan. Ini bisa jadi adalah nama file, jalur folder, nama tabel, dll. Berikut adalah contoh. Jika jalur folder dinamis ditentukan, nilai variabel tidak akan ditulis di sini dalam tabel kontrol.
SinkConnectionSettingsName Nama pengaturan koneksi tujuan dalam tabel kontrol koneksi. Ini opsional.
CopySinkSettings Metadata properti sink dalam aktivitas salin. Ini bisa jadi preCopyScript, tableOption, dll. Berikut adalah contoh.
CopyActivitySettings Metadata properti penerjemah dalam aktivitas penyalinan. Metadata ini digunakan untuk mendefinisikan pemetaan kolom.
TopLevelPipelineName Nama Alur Teratas, yang dapat menyalin objek ini.
TriggerName Nama pemicu, yang dapat memicu pipa untuk menyalin objek ini. Jika debug berjalan, namanya adalah Sandbox. Jika eksekusi manual, namanya adalah Manual. Jika berjalan berdasarkan jadwal, namanya adalah nama pemicu terkait. Ini bisa diinput beberapa nama.
DataLoadingBehaviorSettings Muatan penuh vs. muatan delta.
TaskId Urutan objek yang akan disalin setelah TaskId dalam tabel kontrol (ORDER BY [TaskId] DESC). Jika Anda memiliki objek dalam jumlah besar yang akan disalin tetapi hanya beberapa jumlah salinan bersamaan diperbolehkan, Anda dapat mengubah TaskId untuk setiap objek untuk menentukan objek yang dapat disalin lebih dulu. Nilai default adalah 0.
CopyEnabled Menentukan apakah item diaktifkan dalam proses penyerapan data. Nilai yang diizinkan: 1 (diaktifkan), 0 (dinonaktifkan). Nilai default adalah 1.

Tabel kontrol koneksi

Setiap baris dalam tabel kontrol berisi satu pengaturan koneksi untuk penyimpanan data.

Nama kolom Deskripsi
Nama Nama koneksi dalam parameter dalam tabel kontrol utama.
ConnectionSettings Pengaturan koneksi. Ini bisa menjadi nama DB, nama Server dan sebagainya.

Pipelines

Anda akan melihat tiga tingkat alur yang dihasilkan oleh alat data penyalinan.

MetadataDrivenCopyTask_xxx_TopLevel

Alur ini akan menghitung jumlah total objek (tabel dll.) yang perlu disalin dalam eksekusi ini, muncul dengan jumlah batch berurutan berdasarkan tugas salinan bersamaan maksimum yang diizinkan, dan kemudian mengeksekusi alur lain untuk menyalin batch yang berbeda secara berurutan.

Parameter

Nama parameter Deskripsi
MaxNumberOfConcurrentTasks Anda selalu dapat mengubah jumlah maksimum aktivitas salinan bersamaan yang dijalankan sebelum alur berjalan. Nilai default adalah nilai yang Anda masukkan dalam alat data penyalinan.
MainControlTableName Nama tabel dari tabel kontrol utama. Alur akan mendapatkan metadata dari tabel ini sebelum berjalan
ConnectionControlTableName Nama tabel kontrol koneksi (opsional). Alur akan mendapatkan metadata yang terkait dengan koneksi penyimpanan data sebelum berjalan
MaxNumberOfObjectsReturnedFromLookupActivity Untuk menghindari mencapai batas aktivitas pencarian output, ada cara untuk menentukan jumlah maksimum objek yang ditampilkan dengan aktivitas pencarian. Dalam kebanyakan kasus, nilai default tidak perlu diubah.
windowStart Ketika Anda memasukkan nilai dinamis (misalnya, tttt/bb/hh) sebagai jalur folder, parameter digunakan untuk melewati waktu pemicu saat ini ke alur untuk mengisi jalur folder dinamis. Ketika alur dipicu oleh pemicu jadwal atau pemicu jendela yang jatuh, pengguna tidak perlu memasukkan nilai parameter ini. Nilai sampel: 2021-01-25T01:49:28Z

Aktivitas

Nama aktivitas Jenis aktivitas Deskripsi
GetSumOfObjectsToCopy Pencarian Menghitung jumlah total objek (tabel dll.) yang perlu disalin dalam eksekusi ini.
CopyBatchesOfObjectsSequentially ForEach Berikan jumlah batch berurutan berdasarkan tugas salinan bersamaan maksimum yang diizinkan, dan kemudian jalankan alur lain untuk menyalin batch yang berbeda secara berurutan.
CopyObjectsInOneBtach Jalankan Alur Jalankan alur lain untuk menyalin satu batch objek. Objek milik batch ini akan disalin secara paralel.

MetadataDrivenCopyTask_xxx_ MiddleLevel

Alur ini akan menyalin satu batch objek. Objek milik batch ini akan disalin secara paralel.

Parameter

Nama parameter Deskripsi
MaxNumberOfObjectsReturnedFromLookupActivity Untuk menghindari mencapai batas aktivitas pencarian output, ada cara untuk menentukan jumlah maksimum objek yang ditampilkan dengan aktivitas pencarian. Dalam kebanyakan kasus, nilai default tidak perlu diubah.
TopLevelPipelineName Nama alur lapisan atas.
TriggerName Nama pemicu.
CurrentSequentialNumberOfBatch ID batch berurutan.
SumOfObjectsToCopy Jumlah total objek yang harus disalin.
SumOfObjectsToCopyForCurrentBatch Jumlah objek yang akan disalin dalam batch saat ini.
MainControlTableName Nama tabel kontrol utama.
ConnectionControlTableName Nama tabel kontrol koneksi.

Aktivitas

Nama aktivitas Jenis aktivitas Deskripsi
DivideOneBatchIntoMultipleGroups ForEach Bagi objek dari batch tunggal menjadi beberapa kelompok paralel untuk menghindari mencapai batas output aktivitas pencarian.
GetObjectsPerGroupToCopy Pencarian Dapatkan objek (tabel dll.) dari tabel kontrol yang perlu disalin dalam grup ini. Urutan objek yang akan disalin setelah TaskId dalam tabel kontrol (ORDER BY [TaskId] DESC).
CopyObjectsInOneGroup Jalankan Alur Mengeksekusi alur lain untuk menyalin objek dari satu grup. Objek dalam grup ini akan disalin secara paralel.

MetadataDrivenCopyTask_xxx_ BottomLevel

Alur ini akan menyalin objek dari satu grup. Objek dalam grup ini akan disalin secara paralel.

Parameter

Nama parameter Deskripsi
ObjectsPerGroupToCopy Jumlah objek yang akan disalin dalam grup saat ini.
ConnectionControlTableName Nama tabel kontrol koneksi.
windowStart Ini digunakan untuk melewati waktu pemicu saat ini ke alur untuk mengisi jalur folder dinamis jika dikonfigurasi oleh pengguna.

Aktivitas

Nama aktivitas Jenis aktivitas Deskripsi
ListObjectsFromOneGroup ForEach Daftar objek dari satu kelompok dan iterasi masing-masing untuk aktivitas downstream.
RouteJobsBasedOnLoadingBehavior Sakelar Memeriksa perilaku pemuatan untuk setiap objek. Jika kasus default atau FullLoad, lakukan pemuatan penuh. Jika itu adalah kasus DeltaLoad, lakukan pemuatan bertambah bertahap melalui kolom marka air untuk mengidentifikasi perubahan
FullLoadOneObject Menyalin Mengambil rekam jepret lengkap pada objek ini dan menyalinnya ke tujuan.
DeltaLoadOneObject Menyalin Menyalin data yang diubah hanya dari terakhir kali dengan membandingkan nilai di kolom marka air untuk mengidentifikasi perubahan.
GetMaxWatermarkValue Pencarian Kueri objek sumber untuk mendapatkan nilai maksimum dari kolom marka air.
UpdateWatermarkColumnValue StoreProcedure Menulis kembali nilai marka air baru untuk mengontrol tabel yang akan digunakan selanjutnya.

Pembatasan yang diketahui

  • Nama IR, jenis database, jenis format file tidak dapat diparameterkan dalam ADF. Misalnya, jika Anda ingin menyerap data dari Oracle Server dan SQL Server, Anda akan memerlukan dua alur parameter yang berbeda. Tetapi tabel kontrol tunggal dapat dibagi dengan dua set alur.
  • OPENJSON digunakan dalam skrip SQL yang dihasilkan dengan menyalin alat data. Jika Anda menggunakan SQL Server untuk menghosting tabel kontrol, gunakan SQL Server 2016 (13.x) dan yang lebih baru untuk mendukung fungsi OPENJSON.

Cobalah tutorial ini yang menggunakan alat Copy Data: