Bagikan melalui


Memahami Transformasi Sinkron dan Asinkron

Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory

Untuk memahami perbedaan antara transformasi sinkron dan asinkron di Integration Services, paling mudah untuk memulai dengan pemahaman tentang transformasi sinkron. Jika transformasi sinkron tidak memenuhi kebutuhan Anda, desain Anda mungkin memerlukan transformasi asinkron.

Transformasi Sinkron

Transformasi sinkron memproses baris masuk dan meneruskannya dalam aliran data satu baris sekaligus. Output sinkron dengan input, yang berarti bahwa itu terjadi pada saat yang sama. Oleh karena itu, untuk memproses baris tertentu, transformasi tidak memerlukan informasi tentang baris lain dalam himpunan data. Dalam implementasi aktual, baris dikelompokkan menjadi buffer saat diteruskan dari satu komponen ke komponen berikutnya, tetapi buffer ini transparan bagi pengguna, dan Anda dapat mengasumsikan bahwa setiap baris diproses secara terpisah.

Contoh transformasi sinkron adalah transformasi Konversi Data. Untuk setiap baris masuk, baris tersebut mengonversi nilai di kolom yang ditentukan dan mengirim baris dalam perjalanannya. Setiap operasi konversi diskrit tidak bergantung pada semua baris lain dalam himpunan data.

Dalam pembuatan skrip dan pemrograman Integration Services, Anda menentukan transformasi sinkron dengan mencari ID input komponen dan menetapkannya ke properti SynchronousInputID dari output komponen. Ini memberi tahu mesin aliran data untuk memproses setiap baris dari input dan mengirim setiap baris secara otomatis ke output yang ditentukan. Jika Anda ingin setiap baris masuk ke setiap output, Anda tidak perlu menulis kode tambahan apa pun untuk menghasilkan data. Jika Anda menggunakan properti ExclusionGroup untuk menentukan bahwa baris hanya boleh masuk ke satu atau sekelompok output lainnya, seperti dalam transformasi Pemisahan Bersyarkat, Anda harus memanggil metode DirectRow untuk memilih tujuan yang sesuai untuk setiap baris. Ketika Anda memiliki output kesalahan, Anda harus memanggil DirectErrorRow untuk mengirim baris dengan masalah ke output kesalahan alih-alih output default.

Transformasi Asinkron

Anda dapat memutuskan bahwa desain Anda memerlukan transformasi asinkron ketika tidak dimungkinkan untuk memproses setiap baris secara independen dari semua baris lainnya. Dengan kata lain, Anda tidak dapat meneruskan setiap baris bersama dalam aliran data saat diproses, tetapi sebaliknya harus menghasilkan data secara asinkron, atau pada waktu yang berbeda, daripada input. Misalnya, skenario berikut memerlukan transformasi asinkron:

  • Komponen harus memperoleh beberapa buffer data sebelum dapat melakukan pemrosesannya. Contohnya adalah transformasi Sortir, di mana komponen harus memproses kumpulan baris lengkap dalam satu operasi.

  • Komponen harus menggabungkan baris dari beberapa input. Contohnya adalah transformasi Gabungkan, di mana komponen harus memeriksa beberapa baris dari setiap input lalu menggabungkannya dalam urutan yang diurutkan.

  • Tidak ada korespondensi satu-ke-satu antara baris input dan baris output. Contohnya adalah transformasi Agregat, di mana komponen harus menambahkan baris ke output untuk menahan nilai agregat komputasi.

Dalam pembuatan skrip dan pemrograman Integration Services, Anda menentukan transformasi asinkron dengan menetapkan nilai 0 ke properti SynchronousInputID dari output komponen. . Ini memberi tahu mesin aliran data untuk tidak mengirim setiap baris secara otomatis ke output. Kemudian Anda harus menulis kode untuk mengirim setiap baris secara eksplisit ke output yang sesuai dengan menambahkannya ke buffer output baru yang dibuat untuk output transformasi asinkron.

Catatan

Karena komponen sumber juga harus secara eksplisit menambahkan setiap baris yang dibacanya dari sumber data ke buffer outputnya, sumber menyerupai transformasi dengan output asinkron.

Anda juga dapat membuat transformasi asinkron yang meniru transformasi sinkron dengan menyalin setiap baris input secara eksplisit ke output. Dengan menggunakan pendekatan ini, Anda dapat mengganti nama kolom atau mengonversi jenis atau format data. Namun pendekatan ini menurunkan performa. Anda dapat mencapai hasil yang sama dengan performa yang lebih baik dengan menggunakan komponen Integration Services bawaan, seperti Kolom Salin atau Konversi Data.

Lihat Juga

Membuat Transformasi Sinkron dengan Komponen Skrip
Membuat Transformasi Asinkron dengan Komponen Skrip
Mengembangkan Komponen Transformasi Kustom dengan Output Sinkron
Mengembangkan Komponen Transformasi Kustom dengan Output Asinkron