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
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.
Masukkan koneksi database sumber Anda. Anda juga dapat menggunakan layanan tertaut dalam parameter.
Pilih nama tabel untuk disalin.
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.
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.
Pilih Penyimpanan data tujuan.
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.
Setelah penyebaran alur, Anda dapat menyalin atau mengunduh skrip SQL dari antarmuka pengguna untuk membuat tabel kontrol dan prosedur penyimpanan.
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.
Buka SQL Server Management Studio untuk menyambungkan ke server tabel kontrol Anda, dan jalankan dua skrip SQL untuk membuat tabel kontrol dan prosedur penyimpanan.
Lakukan kueri pada tabel kontrol utama dan tabel kontrol koneksi untuk meninjau metadata di dalamnya.
Tabel kontrol utama
Tabel kontrol koneksi
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 Aktifkan pemicu untuk mengoperasionalkan alur.
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.
Klik kanan alur tingkat atas: MetadataDrivenCopyTask_xxx_TopLevel, lalu pilih Edit tabel kontrol.
Pilih baris dari tabel kontrol untuk diedit.
Telusuri throughput alat data penyalinan, dan akan muncul skrip SQL baru untuk Anda. Jalankan kembali skrip SQL untuk memperbarui tabel kontrol Anda.
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.
Konten terkait
Cobalah tutorial ini yang menggunakan alat Copy Data: