Transformasi alter row dalam pemetaan aliran data

BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics

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.

Pengaturan alter row

Transformasi Alter Row hanya akan beroperasi pada database, REST, atau sink CosmosDB 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.

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.

Kebijakan alter row

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.

Kebijakan alter row

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 Cosmos. Di tab Pengaturan di sink Anda, aktifkan kebijakan alter row mana yang diizinkan untuk sink tersebut.

Sink alter row

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 CosmosDB, atur kunci partisi di pengaturan dan juga atur "id" bidang sistem CosmosDB dalam pemetaan sink Anda. Untuk CosmosDB, "id" kolom sistem wajib disertakan 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:

Contoh alter row

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

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

Langkah berikutnya

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