Transformasi data menggunakan Script activity di Azure Data Factory atau Azure Synapse Analytics
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!
Anda menggunakan aktivitas transformasi data di alur Data Factory atau Synapse untuk mentransformasi dan memproses data mentah menjadi prediksi dan wawasan. Script activity merupakan salah satu aktivitas transformasi yang menyalurkan dukungan. Artikel ini dibuat berdasarkan artikel data transformasi, yang memberikan gambaran umum tentang transformasi data dan aktivitas transformasi yang didukung.
Dengan menggunakan script activity, Anda dapat menjalankan operasi umum dengan Bahasa Manipulasi Data (DML), dan Bahasa Definisi Data (DDL). Pernyataan DML seperti INSERT, UPDATE, DELETE, dan SELECT memungkinkan pengguna menyisipkan, memodifikasi, menghapus, dan mengambil data dalam database. Pernyataan DDL seperti BUAT, UBAH, dan, HAPUS memungkinkan pengelola database untuk membuat, memodifikasi, dan menghapus objek database seperti tabel, indeks, dan pengguna.
Anda dapat menggunakan aktivitas skrip untuk menjalankan skrip SQL di salah satu penyimpanan data berikut di perusahaan Anda atau di mesin virtual (VM) Azure:
- Azure SQL Database
- Azure Synapse Analytics
- Database SQL Server. Jika Anda menggunakan SQL Server, pasang runtime integrasi yang dihost sendiri pada komputer yang sama yang menghost database atau pada komputer terpisah yang memiliki akses ke database. Runtime integrasi yang dihost sendiri adalah komponen yang menghubungkan sumber data di lokal/di Azure VM dengan layanan cloud dengan cara yang aman dan terkelola. Lihat artikel Runtime integrasi yang Dihost Sendiri untuk detailnya.
- Oracle
- Snowflake
Skrip dapat berisi satu pernyataan SQL atau beberapa pernyataan SQL yang berjalan secara berurutan. Anda dapat menggunakan tugas Skrip untuk tujuan berikut:
- Potong tabel sebagai persiapan untuk menyisipkan data.
- Buat, ubah, dan hapus objek database seperti tabel dan tampilan.
- Buat ulang tabel fakta dan dimensi sebelum memuat data ke dalamnya.
- Jalankan prosedur yang tersimpan. Jika pernyataan SQL memanggil prosedur tersimpan yang mengembalikan hasil dari tabel sementara, gunakan opsi DENGAN KUMPULAN HASIL untuk menentukan metadata dengan kumpulan hasil.
- Simpan rowset yang dikembalikan dari kueri sebagai output aktivitas untuk konsumsi downstream.
Detail sintaks
Berikut adalah format JSON untuk menjelaskan Script activity:
{
"name": "<activity name>",
"type": "Script",
"linkedServiceName": {
"referenceName": "<name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"scripts" : [
{
"text": "<Script Block>",
"type": "<Query> or <NonQuery>",
"parameters":[
{
"name": "<name>",
"value": "<value>",
"type": "<type>",
"direction": "<Input> or <Output> or <InputOutput>",
"size": 256
},
...
]
},
...
],
...
]
},
"scriptBlockExecutionTimeout": "<time>",
"logSettings": {
"logDestination": "<ActivityOutput> or <ExternalStore>",
"logLocationSettings":{
"linkedServiceName":{
"referenceName": "<name>",
"type": "<LinkedServiceReference>"
},
"path": "<folder path>"
}
}
}
}
Tabel berikut menjelaskan properti JSON ini:
Nama properti | Deskripsi | Wajib |
---|---|---|
nama | Nama aktivitas. | Ya |
jenis | Jenis aktivitas, diatur ke "Skrip". | Ya |
typeProperties | Tentukan properti untuk mengonfigurasikan Script Activity. | Ya |
linkedServiceName | Database target yang dijalankan script. Hal ini harus menjadi referensi ke layanan tertaut. | Ya |
skrip | Array objek untuk mewakili script. | No |
scripts.text | Teks biasa dari blok kueri. | No |
scripts.type | Jenis blok kueri. Ini bisa menjadi Query atau NonQuery. Default: Kueri. | No |
scripts.parameter | Array parameter script. | No |
scripts.parameter | Nama parameter. | No |
scripts.parameter | Nilai untuk parameter. | No |
scripts.parameter | Tipe data parameter. Jenisnya adalah tipe logis dan mengikuti pemetaan tipe setiap konektor. | No |
scripts.parameter.direction | Arah parameter. Bisa jadi Input, Output, InputOutput. Nilai diabaikan jika arahnya adalah Output. Jenis ReturnValue tidak didukung. Atur nilai pengembalian SP ke parameter output untuk mengambilnya. | No |
scripts.parameter | Ukuran maksimum parameter. Hanya berlaku untuk parameter arah Output/InputOutput dari tipe string/byte[]. | No |
scriptBlockExecutionTimeout | Waktu tunggu untuk operasi eksekusi blok skrip selesai sebelum waktu habis. | No |
logSettings | Pengaturan untuk menyimpan log output. Jika tidak ditentukan, log script dinonaktifkan. | No |
logSettings.logDestination | Tujuan output log. Ini bisa menjadi ActivityOutput atau ExternalStore. Default: ActivityOutput. | No |
logSettings.logLocationSettings | Pengaturan lokasi target jika logDestination adalah ExternalStore. | No |
logSettings.logLocationSettings.linkedServiceName | Layanan terkait dari lokasi target. Hanya penyimpanan blob yang didukung. | No |
logSettings.logLocationSettings | Jalur folder tempat menyimpan log. | No |
Keluaran Aktivitas
Contoh output:
{
"resultSetCount": 2,
"resultSets": [
{
"rowCount": 10,
"rows":[
{
"<columnName1>": "<value1>",
"<columnName2>": "<value2>",
...
}
]
},
...
],
"recordsAffected": 123,
"outputParameters":{
"<parameterName1>": "<value1>",
"<parameterName2>": "<value2>"
},
"outputLogs": "<logs>",
"outputLogsLocation": "<folder path>",
"outputTruncated": true,
...
}
Nama properti | Deskripsi | Kondisi |
---|---|---|
resultSetCount | Jumlah set hasil dikembalikan oleh script. | Selalu |
resultSets | Array yang berisi semua set hasil. | Selalu |
resultSets.rowCount | Total baris dalam kumpulan hasil. | Selalu |
resultSets.rows | Total array baris dalam kumpulan hasil. | Selalu |
recordsAffected | Jumlah baris dari baris yang terpengaruh oleh script. | Jika scriptType adalah NonQuery |
outputParameter | Parameter output script. | Jika tipe parameter adalah Output atau InputOutput. |
outputLogs | Log yang ditulis oleh script, misalnya, mencetak pernyataan. | Jika konektor mendukung pernyataan log dan enableScriptLogs adalah true dan logLocationSettings tidak disediakan. |
outputLogsPath | Jalur lengkap file log. | Jika enableScriptLogs benar dan logLocationSettings disediakan. |
outputTruncated | Indikator apakah output melebihi batas dan terpotong. | Jika output melebihi batas. |
Catatan
- Output dikumpulkan setiap kali blok script dijalankan. Output akhir adalah hasil gabungan dari semua output blok script. Parameter output dengan nama yang sama di blok skrip yang berbeda akan ditimpa.
- Karena output memiliki batasan baris / ukuran, output akan terpotong dalam urutan berikut: log -> parameter -> baris. Perlu dicatat, ini berlaku untuk satu blok skrip, yang berarti baris output dari blok skrip berikutnya tidak akan menghapus log sebelumnya.
- Kesalahan apa pun yang disebabkan oleh log tidak akan gagal dalam aktivitas.
- Untuk output aktivitas yang membutuhkan perhatian seperti resultSets dalam aktivitas down stream silakan lihat dokumentasi hasil aktivitas Pencarian.
- Gunakan outputLogs saat Anda menggunakan pernyataan 'CETAK' untuk tujuan pencatatan. Jika kueri mengembalikan resultSets, maka akan tersedia dalam output aktivitas dan akan dibatasi hingga 5000 baris/batas ukuran 4MB.
Mengonfigurasi Script activity menggunakan UI
Skrip sebaris
script sebaris terintegrasi dengan baik dengan Pipeline CI/CD karena script disimpan sebagai bagian dari pipeline metadata.
Pencatatan
Opsi Pencatatan:
- Nonaktifkan - Tidak ada output eksekusi yang dicatat.
- Output aktivitas - Output eksekusi skrip ditambahkan ke output aktivitas. Aktivitas hilir kemudian dapat mengonsumsinya. Ukuran output dibatasi hingga 4 MB.
- Penyimpanan eksternal - Mempertahankan output ke penyimpanan. Gunakan opsi ini jika ukuran output lebih besar dari 2 MB atau Anda ingin secara eksplisit mempertahankan output di akun penyimpanan Anda.
Catatan
Penagihan - Script activity akan ditagih sebagai aktivitas Pipeline.
Konten terkait
Lihat artikel berikut yang menjelaskan cara mentransformasikan data dengan cara lain: