Transformasi alter row dalam pemetaan aliran data

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!

Aliran data tersedia di Alur Azure Data Factory dan Azure Synapse. Artikel ini berlaku untuk memetakan aliran data. Jika Anda baru mengenal transformasi, silakan lihat artikel pengantar Transformasi data menggunakan aliran data pemetaan.

Gunakan transformasi Alter Row untuk mengatur kebijakan sisipkan, hapus, perbarui, dan upsert pada baris. Anda dapat menambahkan satu-hingga-beberapa kondisi sebagai ekspresi. Kondisi ini harus ditentukan dalam urutan prioritas, karena setiap baris akan ditandai dengan kebijakan yang sesuai dengan ekspresi pencocokan-pertama. Setiap kondisi tersebut dapat mengakibatkan baris (atau beberapa baris) disisipkan, diperbarui, dihapus, atau diupsert. Alter Row dapat menghasilkan tindakan DDL & DML terhadap database Anda.

Alter row settings

Transformasi Alter Row hanya beroperasi pada sink database, REST, atau Azure Cosmos DB dalam aliran data Anda. Tindakan yang Anda tetapkan ke baris (sisipkan, perbarui, hapus, upsert) tidak akan terjadi selama sesi debug. Jalankan aktivitas Jalankan Aliran Data dalam alur untuk memberlakukan kebijakan alter row pada tabel database Anda.

Catatan

Transformasi Alter Row tidak diperlukan untuk mengubah aliran data Pengambilan Data yang menggunakan sumber CDC asli seperti SQL Server atau SAP. Dalam instans tersebut, ADF akan secara otomatis mendeteksi penanda baris sehingga kebijakan Alter Row tidak perlu.

Menentukan kebijakan baris default

Buat transformasi Alter Row dan tentukan kebijakan baris dengan kondisi true(). Setiap baris yang tidak cocok dengan ekspresi yang ditentukan sebelumnya akan ditandai untuk kebijakan baris yang ditentukan. Secara default, setiap baris yang tidak cocok dengan ekspresi bersyarat apa pun akan ditandai untuk Insert.

Alter row policy

Catatan

Untuk menandai semua baris dengan satu kebijakan, Anda bisa membuat kondisi untuk kebijakan tersebut dan menentukan kondisi sebagai true().

Menampilkan kebijakan dalam pratinjau data

Gunakan mode debug untuk menampilkan hasil kebijakan alter row Anda di panel pratinjau data. Pratinjau data transformasi alter row tidak akan menghasilkan tindakan DDL atau DML terhadap target Anda.

Alter row policies

Setiap kebijakan alter row diwakili oleh ikon yang menunjukkan apakah tindakan sisipkan, pembaruan, upsert, atau dihapus akan terjadi. Header atas memperlihatkan jumlah baris yang terpengaruh oleh setiap kebijakan dalam pratinjau.

Perbolehkan kebijakan alter row di sink

Agar kebijakan alter row berfungsi, aliran data harus menulis ke database atau sink Azure Cosmos DB. Di tab Pengaturan di sink Anda, aktifkan kebijakan alter row mana yang diizinkan untuk sink tersebut.

Alter row sink

Perilaku default hanya untuk memperbolehkan sisipan. Untuk memperbolehkan pembaruan, upsert, atau penghapusan, centang kotak di sink yang sesuai dengan kondisi tersebut. Jika pembaruan, upserts, atau, penghapusan diaktifkan, Anda harus menentukan kolom kunci mana di sink yang akan dicocokkan.

Catatan

Jika sisipan, pembaruan, atau upsert Anda mengubah skema tabel target pada sink, aliran data akan gagal. Untuk mengubah skema target dalam database Anda, pilih Buat ulang tabel sebagai tindakan tabel. Tindakan ini akan menghapus dan membuat ulang tabel Anda dengan definisi skema baru.

Transformasi sink memerlukan kunci tunggal atau serangkaian kunci untuk identifikasi baris khusus dalam database target Anda. Untuk sink SQL, atur kunci di tab pengaturan sink. Untuk Azure Cosmos DB, atur kunci partisi di pengaturan dan atur juga bidang sistem Azure Cosmos DB "id" dalam pemetaan sink Anda. Untuk Azure Cosmos DB, wajib menyertakan kolom sistem "id" untuk pembaruan, upsert, dan penghapusan.

Menggabungkan dan meningkatkan dengan Azure SQL Database dan Azure Synapse

Dukungan Aliran Data digabungkan dengan Azure SQL Database dan kumpulan database Azure Synapse (gudang data) dengan opsi upsert.

Namun, Anda dapat mengalami skenario di mana skema database target Anda menggunakan properti identitas kolom kunci. Layanan mengharuskan Anda untuk mengidentifikasi kunci yang akan Anda gunakan untuk mencocokkan nilai baris untuk pembaruan dan peningkatan. Tetapi jika properti identitas kolom target sudah ditetapkan dan Anda menggunakan kebijakan upsert, database target tidak akan memungkinkan Anda untuk menulis ke kolom. Anda mungkin juga mengalami kesalahan saat mencoba melakukan upsert terhadap kolom distribusi tabel terdistribusi.

Berikut adalah cara untuk memperbaikinya:

  1. Buka Pengaturan transformasi Sink dan atur "Lewati menulis kolom kunci". Ini akan memberi tahu layanan untuk tidak menulis kolom yang telah Anda pilih sebagai nilai kunci untuk pemetaan Anda.

  2. Jika kolom kunci tersebut bukan merupakan kolom yang menyebabkan masalah untuk kolom identitas, maka Anda dapat menggunakan opsi SQL pra-pemrosesan transformasi Sink: SET IDENTITY_INSERT tbl_content ON. Kemudian, matikan dengan properti SQL pasca-pemrosesan: SET IDENTITY_INSERT tbl_content OFF.

  3. Untuk kasus identitas dan kasus kolom distribusi, Anda dapat mengalihkan logika Anda dari Upsert menjadi menggunakan kondisi pembaruan terpisah dan kondisi sisipkan terpisah menggunakan transformasi Pemisahan Bersyarat. Dengan cara ini, Anda dapat mengatur pemetaan pada jalur pembaruan untuk mengabaikan pemetaan kolom kunci.

Skrip aliran data

Sintaks

<incomingStream>
    alterRow(
           insertIf(<condition>?),
           updateIf(<condition>?),
           deleteIf(<condition>?),
           upsertIf(<condition>?),
        ) ~> <alterRowTransformationName>

Contoh

Contoh di bawah ini adalah transformasi alter row bernama CleanData yang mengambil aliran masuk SpecifyUpsertConditions dan membuat tiga kondisi alter row. Dalam transformasi sebelumnya, kolom bernama alterRowCondition dihitung yang menentukan apakah baris disisipkan, diperbarui, atau dihapus dalam database atau tidak. Jika nilai kolom memiliki nilai untai (karakter) yang cocok dengan aturan alter row, maka kebijakan tersebut ditetapkan.

Di UI, transformasi ini terlihat seperti gambar di bawah ini:

Alter row example

Skrip aliran data untuk transformasi ini ada di cuplikan di bawah ini:

SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
	updateIf(alterRowCondition == 'update'),
	deleteIf(alterRowCondition == 'delete')) ~> AlterRow

Setelah transformasi Alter Row, Anda mungkin ingin melakukan sink pada data Anda ke dalam penyimpanan data tujuan.