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

Script mungkin 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 “Script”. 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. Tipe 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
logSettiongs.logLocationSettings.linkedServiceName Layanan terkait dari lokasi target. Hanya penyimpanan blob yang didukung. No
logSettings.logLocationSettings Jalur folder tempat log akan disimpan. 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 benar 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

Screenshot showing the UI to configure an inline script.

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

Pencatatan

Screenshot showing the UI for the logging settings for a script.

Opsi Pencatatan:

  • Nonaktifkan - Tidak ada output eksekusi yang dicatat.
  • Output aktivitas - Output eksekusi skrip ditambahkan ke output aktivitas. Hal ini dapat dikonsumsi oleh kegiatan downstream. Ukuran output dibatasi hingga 4MB.
  • Penyimpanan eksternal - Mempertahankan output ke penyimpanan. Gunakan opsi ini jika ukuran output lebih besar dari 2MB atau Anda ingin secara eksplisit mempertahankan output di akun penyimpanan Anda.

Catatan

Penagihan - Script activity akan ditagih sebagai aktivitas Pipeline.

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