Bagikan melalui


Transformasi data menggunakan Script activity di Azure Data Factory atau Azure Synapse Analytics

BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics

Petunjuk

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 Data Factory atau Synapse pipeline untuk mengolah data mentah menjadi prediksi dan wawasan. Script activity adalah salah satu aktivitas transformasi yang didukung oleh pipeline. 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 Database for PostgreSQL (Versi 2.0)
  • Azure SQL Database
  • Azure Synapse Analytics
  • Database SQL Server. Jika Anda menggunakan SQL Server, instal Runtime Integrasi yang Di-host Sendiri pada komputer yang sama dengan yang menghosting database atau di 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 Self-hosted integration runtime untuk informasi lebih lanjut.
  • 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 penggunaan di hilir.

Detail sintaksis

Berikut adalah format JSON untuk menentukan aktivitas Skrip:

{ 
   "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 menjadi "Skrip". Ya
typeProperties Tentukan properti untuk mengonfigurasikan Script Activity. Ya
NamaLayananTertaut Database target tempat script dijalankan. Hal ini harus menjadi referensi ke layanan tertaut. Ya
skrip Larik objek untuk mewakili skrip. Tidak
skrip.teks Teks biasa dari blok kueri. Tidak
scripts.tipe Jenis blok kueri. Ini bisa menjadi Query atau NonQuery. Default: Kueri. Tidak
skrip.parameter Susunan parameter dari skrip. Tidak
scripts.parameter.name Nama parameter. Tidak
scripts.parameter.value Nilai dari parameter. Tidak
scripts.parameter.type Tipe data dari parameter. Jenisnya adalah tipe logis dan mengikuti pemetaan tipe setiap konektor. Tidak
skrip.parameter.arah Arah dari parameter. Bisa jadi Input, Output, InputOutput. Nilai diabaikan jika arahnya adalah Output. Jenis ReturnValue tidak didukung. Atur nilai pengembalian SP ke parameter keluaran untuk pengambilan nilainya. Tidak
scripts.parameter.ukuran Ukuran maksimum parameter. Hanya berlaku untuk parameter arah Output/InputOutput dari tipe string/byte[]. Tidak
scriptBlockExecutionTimeout Waktu tunggu untuk operasi eksekusi blok skrip selesai sebelum habis waktu. Tidak
logSettings Pengaturan untuk menyimpan log output. Jika tidak ditentukan, log skrip akan dinonaktifkan. Tidak
PengaturanLog.TujuanLog Tujuan keluaran log. Ini bisa menjadi "ActivityOutput" atau "ExternalStore". Default: ActivityOutput. Tidak
logSettings.logLocationSettings Pengaturan lokasi target jika logDestination adalah ExternalStore. Tidak
logSettings.logLocationSettings.linkedServiceName Layanan terkait dari lokasi target. Hanya penyimpanan blob yang didukung. Tidak
logSettings.logLocationSettings.path Jalur folder di bawah mana menyimpan log. Tidak

Hasil 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
JumlahSetHasil Jumlah set hasil yang dikembalikan oleh skrip. Selalu
kumpulan hasil Array yang berisi semua kumpulan hasil. Selalu
resultSets.rowCount Total baris dalam set hasil. Selalu
resultSets.rows Susunan baris dalam set hasil. Selalu
recordsAffected Jumlah baris yang terpengaruh oleh skrip. Jika scriptType adalah NonQuery
parameter keluaran Parameter output dari 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.
output terpotong Indikator apakah output melebihi batas dan terpotong atau tidak. Jika output melebihi batas.

Catatan

  • Output dikumpulkan setiap kali blok script dijalankan. Output akhir adalah hasil gabungan dari semua output blok script. Parameter keluaran dengan nama yang sama di blok skrip yang berbeda akan ditimpa.
  • Karena output memiliki batasan ukuran / baris, output akan dipotong dalam urutan berikut: log -> parameter -> baris. Ini berlaku untuk satu blok skrip, yang berarti baris output blok skrip berikutnya tidak akan mengeluarkan log sebelumnya.
  • Kesalahan apapun yang disebabkan oleh log tidak akan menyebabkan aktivitas gagal.
  • Untuk mengonsumsi resultSets output aktivitas dalam aktivitas hilir, lihat dokumentasi hasil aktivitas Pencarian.
  • Gunakan outputLogs saat Anda menggunakan pernyataan 'PRINT' untuk tujuan pengelogan. Jika kueri mengembalikan resultSets, maka akan tersedia dalam output aktivitas dan akan dibatasi hingga 5000 baris/batas ukuran 4MB.

Mengonfigurasi aktivitas Script menggunakan UI

Skrip inline

Cuplikan layar memperlihatkan UI untuk mengonfigurasi skrip sebaris.

Skrip sebaris terintegrasi dengan baik dengan Pipeline CI/CD karena skrip disimpan sebagai bagian dari metadata pipeline.

Pencatatan

Cuplikan layar memperlihatkan UI untuk pengaturan pengelogan untuk skrip.

Opsi Pencatatan:

  • Nonaktifkan - Tidak ada output eksekusi yang dicatat.
  • Keluaran aktivitas - Keluaran dari eksekusi skrip ditambahkan ke keluaran 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 - Aktivitas script akan ditagih sebagai aktivitas pipeline.

Lihat artikel berikut yang menjelaskan cara mentransformasikan data dengan cara lain: