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 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.
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 terjadi selama sesi debug. Untuk memberlakukan kebijakan ubah baris pada tabel database Anda, jalankan aktivitas Jalankan Aliran Data dalam alur.
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 ditandai untuk kebijakan baris yang ditentukan. Secara default, setiap baris yang tidak cocok dengan ekspresi bersyarkat ditandai untuk Insert
.
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 baris perubahan tidak menghasilkan tindakan DDL atau DML terhadap target Anda.
Ikon untuk setiap kebijakan baris perubahan menunjukkan apakah tindakan sisipkan, perbarui, upsert, atau dihapus terjadi. Header atas memperlihatkan berapa banyak baris yang dipengaruhi 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.
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 ini mengharuskan Anda mengidentifikasi kunci yang Anda gunakan untuk mencocokkan nilai baris untuk pembaruan dan upsert. Tetapi jika kolom target memiliki properti identitas yang ditetapkan dan Anda menggunakan kebijakan upsert, database target tidak memungkinkan Anda menulis ke kolom. Anda mungkin juga mengalami kesalahan saat mencoba melakukan upsert terhadap kolom distribusi tabel terdistribusi.
Berikut adalah cara untuk memperbaikinya:
Buka Pengaturan transformasi Sink dan atur "Lewati menulis kolom kunci". Ini memberi tahu layanan untuk tidak menulis kolom yang telah Anda pilih sebagai nilai kunci untuk pemetaan Anda.
Jika kolom kunci tersebut bukan kolom yang menyebabkan masalah untuk kolom identitas, maka Anda dapat menggunakan opsi SQL praproscesing transformasi Sink:
SET IDENTITY_INSERT tbl_content ON
. Kemudian, matikan dengan properti SQL pasca-pemrosesan:SET IDENTITY_INSERT tbl_content OFF
.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 string yang cocok dengan aturan ubah baris, maka akan ditetapkan kebijakan tersebut.
Di UI, transformasi ini terlihat seperti gambar di bawah ini:
Skrip aliran data untuk transformasi ini ada di cuplikan di bawah ini:
SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
updateIf(alterRowCondition == 'update'),
deleteIf(alterRowCondition == 'delete')) ~> AlterRow
Konten terkait
Setelah transformasi Ubah Baris, Anda mungkin ingin men-sink data Anda ke penyimpanan data tujuan.