Bagikan melalui


Salin massal 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!

Untuk menyalin data dari gudang data di Oracle Server, Netezza, Teradata, atau SQL Server ke Azure Synapse Analytics, Anda harus memuat sejumlah besar data dari beberapa tabel. Biasanya, data harus dipartisi di setiap tabel sehingga Anda dapat memuat baris dengan beberapa alur secara paralel dari satu tabel. Artikel ini menjelaskan templat untuk digunakan dalam skenario ini.

Catatan

Jika Anda ingin menyalin data dari sejumlah kecil tabel dengan volume data yang relatif kecil ke Azure Synapse Analytics, menggunakan alat Azure Data Factory Copy Data lebih efisien. Templat yang dijelaskan dalam artikel ini mencakup lebih dari apa yang Anda butuhkan untuk skenario tersebut.

Tentang templat solusi ini

Templat ini mengambil daftar partisi database sumber untuk disalin dari tabel kontrol eksternal. Kemudian templat melakukan iterasi di setiap partisi dalam database sumber dan menyalin data ke tujuan.

Templat tersebut berisi tiga aktivitas:

  • Lookup mengambil daftar partisi database pasti dari tabel kontrol eksternal.
  • ForEach mendapatkan daftar partisi dari aktivitas Lookup dan melakukan iterasi pada setiap partisi ke aktivitas Copy.
  • Copy menyalin setiap partisi dari penyimpanan database sumber ke penyimpanan tujuan.

Templat menentukan parameter berikut:

  • Control_Table_Name adalah tabel kontrol eksternal Anda, yang menyimpan daftar partisi untuk database sumber.
  • Control_Table_Schema_PartitionID adalah nama kolom di tabel kontrol eksternal Anda yang menyimpan setiap ID partisi. Pastikan bahwa ID partisi unik untuk tiap partisi dalam database sumber.
  • Control_Table_Schema_SourceTableName adalah tabel kontrol eksternal Anda yang menyimpan setiap nama tabel dari database sumber.
  • Control_Table_Schema_FilterQuery adalah nama kolom dalam tabel kontrol eksternal Anda yang menyimpan kueri filter untuk mendapatkan data dari setiap partisi dalam database sumber. Misalnya, jika Anda mempartisi data berdasarkan tahun, kueri yang disimpan di setiap baris mungkin mirip dengan select * from datasource where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''.
  • Data_Destination_Folder_Path adalah jalur tempat data disalin di penyimpanan tujuan Anda (berlaku saat tujuan yang Anda pilih adalah "File System" atau "Azure Data Lake Storage Gen1").
  • Data_Destination_Container adalah jalur folder akar tempat data disalin di penyimpanan tujuan Anda.
  • Data_Destination_Directory adalah jalur direktori di bawah akar tempat data disalin di penyimpanan tujuan Anda.

Tiga parameter terakhir, yang menentukan jalur di penyimpanan tujuan Anda hanya terlihat jika tujuan yang Anda pilih adalah penyimpanan berbasis file. Jika Anda memilih "Azure Synapse Analytics" sebagai penyimpanan tujuan, parameter ini tidak diperlukan. Namun, nama tabel dan skema di Azure Synapse Analytics harus sama dengan yang ada di database sumber.

Cara menggunakan templat solusi ini

  1. Buat tabel kontrol di SQL Server atau Azure SQL Database untuk menyimpan daftar partisi database sumber untuk salinan massal. Dalam contoh berikut, ada lima partisi dalam database sumber. Tiga partisi adalah untuk datasource_table, dan dua untuk project_table. Kolom LastModifytime digunakan untuk mempartisi data dalam tabel datasource_table dari database sumber. Kueri yang digunakan untuk membaca partisi pertama adalah 'select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''. Anda bisa menggunakan kueri serupa untuk membaca data dari partisi lain.

     		Create table ControlTableForTemplate
     		(
     		PartitionID int,
     		SourceTableName  varchar(255),
     		FilterQuery varchar(255)
     		);
    
     		INSERT INTO ControlTableForTemplate
     		(PartitionID, SourceTableName, FilterQuery)
     		VALUES
     		(1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''),
     		(2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''),
     		(3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''),
     		(4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'),
     		(5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
    
  2. Masuk ke templat Salin Massal dari Database. Buat koneksi Baru ke tabel kontrol eksternal yang Anda buat di langkah 1.

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

  3. Buat koneksi Baru ke database sumber yang ingin Anda salin datanya.

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

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

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

  5. Pilih Gunakan templat ini.

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

    Screenshot showing the pipeline.

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

    Screenshot showing the Debug button.

  8. Anda melihat hasil yang mirip dengan contoh berikut:

    Screenshot showing the result of the pipeline run.

  9. (Opsional) Jika Anda memilih "Azure Synapse Analytics" sebagai tujuan data, Anda harus memasukkan koneksi ke penyimpanan Azure Blob untuk penahapan, seperti yang diwajibkan oleh Azure Synapse Analytics Polybase. Templat akan secara otomatis menghasilkan jalur kontainer untuk penyimpanan Blob Anda. Periksa apakah kontainer telah dibuat setelah alur berjalan.

    Screenshot showing the Polybase setting.