Cara menggunakan parameter, ekspresi dan fungsi di Azure Data Factory

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!

Dalam dokumen ini, kami akan berfokus terutama pada pembelajaran konsep dasar dengan berbagai contoh untuk mengeksplorasi kemampuan membuat alur data berparameter dalam Azure Data Factory. Parameterisasi dan ekspresi dinamis adalah tambahan penting untuk ADF karena mereka dapat menghemat banyak waktu dan memungkinkan solusi Extract, Transform, Load (ETL) atau Extract, Load, Transform (ELT) yang jauh lebih fleksibel, yang secara signifikan akan mengurangi biaya pemeliharaan solusi dan mempercepat penerapan fitur-fitur baru ke dalam alur yang ada. Keuntungan ini karena parameterisasi meminimalkan jumlah pengkodean keras dan meningkatkan jumlah objek dan proses yang dapat digunakan kembali dalam solusi.

Antarmuka pengguna dan parameter Azure Data Factory

Jika Anda baru menggunakan parameter Azure Data Factory di antarmuka pengguna ADF, silakan tinjau Antarmuka pengguna Azure Data Factory untuk layanan tertaut dengan parameter dan Antarmuka pengguna Azure Data Factory untuk alur yang digerakkan metadata dengan parameter untuk penjelasan visual.

Konsep parameter dan ekspresi

Anda dapat menggunakan parameter untuk meneruskan nilai eksternal ke dalam alur, himpunan data, layanan tertaut, dan alur data. Setelah parameter diteruskan ke sumber daya, parameter tidak dapat diubah. Dengan membuat parameter sumber daya, Anda dapat menggunakannya kembali dengan nilai yang berbeda setiap saat. Parameter dapat digunakan secara individual atau sebagai bagian dari ekspresi. Nilai JSON dalam definisi dapat berupa nilai literal atau ekspresi yang dievaluasi pada waktu runtime.

Contohnya:

"name": "value"

atau

"name": "@pipeline().parameters.password"

Ekspresi dapat muncul di mana saja dalam nilai untai JSON dan selalu menghasilkan nilai JSON lain. Di sini, kata sandi adalah parameter alur dalam ekspresi. Jika nilai JSON adalah ekspresi, isi ekspresi diekstrak dengan menghapus tanda at (@). Jika diperlukan string harfiah yang dimulai dengan @, string tersebut harus diloloskan menggunakan @@. Contoh berikut menunjukkan bagaimana ekspresi dievaluasi.

Nilai JSON Hasil
"parameter" Karakter 'parameter' dikembalikan.
"parameter[1]" Karakter 'parameter[1]' dikembalikan.
"@@" String karakter 1 yang berisi '@' ditampilkan.
" @" String karakter 2 yang berisi ' @' ditampilkan.

Ekspresi juga dapat muncul di dalam untai (karakter), menggunakan fitur yang disebut interpolasi untai (karakter) tempat ekspresi dibungkus @{ ... }. Misalnya: "name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"

Gunakan interpolasi untai (karakter), maka hasilnya selalu berupa untai (karakter). Katakanlah saya telah menentukan myNumber sebagai 42 dan myString sebagai foo:

Nilai JSON Hasil
"@pipeline().parameters.myString" Mengembalikan foo sebagai untai (karakter).
"@{pipeline().parameters.myString}" Mengembalikan foo sebagai untai (karakter).
"@pipeline().parameters.myNumber" Mengembalikan 42 sebagai angka.
"@{pipeline().parameters.myNumber}" Mengembalikan 42 sebagai untai (karakter).
"Jawabannya: @{pipeline().parameters.myNumber}" Mengembalikan untai (karakter) Answer is: 42.
"@concat('Answer is: ', string(pipeline().parameters.myNumber))" Mengembalikan untai (karakter) Answer is: 42
"Jawaban adalah: @@{pipeline().parameters.myNumber}" Mengembalikan untai (karakter) Answer is: @{pipeline().parameters.myNumber}.

Contoh penggunaan parameter dalam ekspresi

Contoh ekspresi kompleks

Contoh di bawah ini menunjukkan contoh kompleks yang mereferensikan sub-bidang output aktivitas yang mendalam. Untuk mereferensikan parameter alur yang dievaluasi ke sub-bidang, gunakan sintaks [] bukan operator dot(.) (seperti dalam kasus subfield1 dan subfield2)

@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*

Editor konten dinamis

Editor konten dinamis secara otomatis meng-escape karakter dalam konten Anda setelah Anda selesai mengedit. Misalnya, konten berikut di editor konten adalah interpolasi untai (karakter) dengan dua fungsi ekspresi.

{ 
  "type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
  "name": "@{toUpper('myData')}"
}

Editor konten dinamis mengonversi konten di atas untuk ekspresi "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}". Hasil dari ekspresi ini adalah untai (karakter) format JSON yang ditunjukkan di bawah ini.

{
  "type": "Table",
  "name": "MYDATA"
}

Himpunan data dengan parameter

Dalam contoh berikut, BlobDataset mengambil parameter bernama jalur. Nilainya digunakan untuk mengatur nilai untuk properti folderPath dengan menggunakan ekspresi: dataset().path.

{
    "name": "BlobDataset",
    "properties": {
        "type": "AzureBlob",
        "typeProperties": {
            "folderPath": "@dataset().path"
        },
        "linkedServiceName": {
            "referenceName": "AzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "parameters": {
            "path": {
                "type": "String"
            }
        }
    }
}

Alur dengan parameter

Dalam contoh berikut, alur mengambil parameter inputPath dan outputPath. Jalur untuk himpunan data blob yang berparameter diatur menggunakan nilai parameter ini. Sintaks yang digunakan di sini adalah: pipeline().parameters.parametername.

{
    "name": "Adfv2QuickStartPipeline",
    "properties": {
        "activities": [
            {
                "name": "CopyFromBlobToBlob",
                "type": "Copy",
                "inputs": [
                    {
                        "referenceName": "BlobDataset",
                        "parameters": {
                            "path": "@pipeline().parameters.inputPath"
                        },
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "BlobDataset",
                        "parameters": {
                            "path": "@pipeline().parameters.outputPath"
                        },
                        "type": "DatasetReference"
                    }
                ],
                "typeProperties": {
                    "source": {
                        "type": "BlobSource"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                }
            }
        ],
        "parameters": {
            "inputPath": {
                "type": "String"
            },
            "outputPath": {
                "type": "String"
            }
        }
    }
}

Memanggil fungsi dalam ekspresi

Anda dapat memanggil fungsi dalam ekspresi. Bagian berikut ini menyediakan informasi tentang fungsi yang bisa digunakan dalam ekspresi.

Fungsi string

Jika ingin menggunakan string, Anda dapat menggunakan fungsi string ini dan juga beberapa fungsi koleksi. Fungsi string hanya berfungsi pada string.

Fungsi string Tugas
concat Gabungkan dua untai (karakter) atau lebih, dan kembalikan untai (karakter) gabungan.
endsWith Memeriksa apakah string berakhir dengan substring yang ditentukan.
Guid Membuat pengidentifikasi unik global (GUID) sebagai string.
indexOf Mengembalikan posisi awal untuk substring.
lastIndexOf Mengembalikan posisi awal untuk kemunculan terakhir substring.
mengganti Mengganti substring dengan string yang ditentukan, dan mengembalikan string yang diperbarui.
belah Mengembalikan larik yang berisi substring, dipisahkan dengan koma, dari string yang lebih besar berdasarkan karakter pembatas tertentu dalam string asli.
startsWith Memeriksa apakah string dimulai dengan substring tertentu.
substring Mengembalikan karakter dari string, dimulai dari posisi yang ditentukan.
ToLower Mengembalikan untai (karakter) dalam format huruf kecil.
toUpper Mengembalikan string dalam format huruf besar.
trim Menghapus spasi di depan dan di belakang pada string, dan mengembalikan string yang diperbarui.

Fungsi pengumpulan

Jika ingin menggunakan koleksi, umumnya larik, string, dan terkadang, kamus, Anda dapat menggunakan fungsi koleksi ini.

Fungsi koleksi Tugas
mengandung Memeriksa apakah koleksi memiliki item tertentu.
kosong Memeriksa apakah koleksi kosong.
first Mengembalikan item pertama dari koleksi.
persimpangan Mengembalikan koleksi yang hanya memiliki item umum di seluruh koleksi yang ditentukan.
join Mengembalikan string yang memiliki semua item dari larik, dipisahkan oleh karakter yang ditentukan.
last Mengembalikan item terakhir dari koleksi.
length Mengembalikan jumlah item dalam string atau larik.
skip Menghapus item dari depan koleksi, dan mengembalikan semua item lainnya.
take Mengembalikan item dari bagian depan koleksi.
union Mengembalikan koleksi yang memiliki semua item dari koleksi yang ditentukan.

Fungsi logika

Fungsi-fungsi ini berguna dalam kondisi, dapat digunakan untuk mengevaluasi segala jenis logika.

Fungsi perbandingan logika Tugas
dan Memeriksa apakah semua ekspresi berupa true.
setara Memeriksa apakah kedua nilai tersebut setara.
lebih besar Memeriksa apakah nilai pertama lebih besar dari nilai kedua.
lebihbesarAtauSetara Memeriksa apakah nilai pertama lebih besar dari atau sama dengan nilai kedua.
if Periksa apakah ekspresi itu true atau false. Berdasarkan hasilnya, mengembalikan nilai yang ditentukan.
kurang Periksa apakah nilai pertama kurang dari nilai kedua.
kurangAtauSetara Memeriksa apakah nilai pertama kurang dari atau sama dengan nilai kedua.
Tidak Periksa apakah ekspresi itu false.
atau Memeriksa apakah setidaknya satu ekspresi true.

Fungsi konversi

Fungsi ini digunakan untuk mengonversi antara masing-masing jenis asli dalam bahasa pemrogram:

  • string
  • Integer
  • float
  • Boolean
  • larik
  • dictionaries
Fungsi konversi Tugas
array Mengembalikan larik dari satu input yang ditentukan. Untuk beberapa input, lihat createArray.
base64 Mengembalikan versi yang dienkode ke base64 untuk string.
base64ToBinary Mengembalikan versi biner untuk string yang dienkode ke base64.
base64KeUntai Mengembalikan versi string untuk string yang dienkode ke base64.
biner Mengembalikan versi biner untuk nilai input.
bool Mengembalikan versi Boolean untuk nilai input.
gabungkan Mengembalikan nilai non-null pertama dari satu atau beberapa parameter.
createArray Mengembalikan larik dari beberapa input.
dataUri Mengembalikan URI data untuk nilai input.
dataUriToBinary Mengembalikan versi biner untuk URI data.
dataUriToString Mengembalikan versi string untuk URI data.
decodeBase64 Mengembalikan versi string untuk string yang dienkode ke base64.
decodeDataUri Mengembalikan versi biner untuk URI data.
decodeUriComponen Mengembalikan string yang menggantikan escape character dengan versi yang didekodekan.
decodeUriComponent Mengembalikan string yang menggantikan karakter URL yang tidak aman dengan escape character.
float Mengembalikan angka titik mengambang untuk nilai input.
int Mengembalikan versi bilangan bulat untuk string.
json Mengembalikan nilai jenis JavaScript Object Notation (JSON) atau objek untuk string atau XML.
string Mengembalikan versi string untuk nilai input.
uriComponent Mengembalikan versi yang dienkode ke URI untuk nilai input dengan mengganti karakter URL yang tidak aman dengan escape character.
uriComponentToBinary Mengembalikan versi biner untuk string yang dienkode ke URI.
uriComponentToString Mengembalikan versi string untuk string yang dienkode ke URI.
xml Mengembalikan versi XML untuk string.
xpath Memeriksa XML untuk node atau nilai yang cocok dengan ekspresi JalurX (XML Path Language), dan mengembalikan node atau nilai yang cocok.

Fungsi matematika

Fungsi-fungsi ini dapat digunakan untuk salah satu jenis angka: bilangan bulat dan float.

Fungsi matematika Tugas
penambahan Mengembalikan hasil dari penjumlahan dua angka.
div Mengembalikan hasil dari pembagian dua angka.
max Mengembalikan nilai tertinggi dari sekumpulan angka atau larik.
min Mengembalikan nilai terendah dari sekumpulan angka atau larik.
mod Mengembalikan sisa dari pembagian dua angka.
mul Mengembalikan produk dari perkalian dua angka.
rand Mengembalikan bilangan bulat acak dari rentang tertentu.
rentang Mengembalikan larik bilangan bulat yang dimulai dari bilangan bulat tertentu.
sub Mengembalikan hasil dari mengurangi angka kedua dari angka pertama.

Fungsi tanggal

Fungsi tanggal atau waktu Tugas
addDays Menambahkan beberapa hari ke tanda waktu.
addHours Menambahkan beberapa jam ke tanda waktu.
addMinutes Menambahkan beberapa menit ke tanda waktu.
addSeconds Menambahkan beberapa detik ke tanda waktu.
addToTime Menambahkan sejumlah unit waktu ke tanda waktu. Lihat juga getFutureTime.
convertFromUtc Mengonversi tanda waktu dari Universal Time Coordinated (UTC) ke zona waktu target.
convertTimeZone Mengonversi tanda waktu dari zona waktu sumber ke zona waktu target.
convertToUtc Mengonversi tanda waktu dari zona waktu sumber ke Universal Time Coordinated (UTC).
dayOfMonth Mengembalikan komponen hari dalam satu bulan dari tanda waktu.
dayOfWeek Mengembalikan komponen hari dalam seminggu dari tanda waktu.
dayOfYear Mengembalikan komponen hari dalam setahun dari tanda waktu.
formatDateTime Mengembalikan tanda waktu sebagai untai dalam format opsional.
getFutureTime Mengembalikan tanda waktu saat ini ditambah unit waktu yang ditentukan. Lihat juga addToTime.
getPastTime Mengembalikan tanda waktu saat ini dikurangi unit waktu yang ditentukan. Lihat juga subtractFromTime.
startOfDay Mengembalikan awal hari untuk tanda waktu.
startOfHour Mengembalikan awal jam untuk tanda waktu.
startOfMonth Mengembalikan awal bulan untuk tanda waktu.
subtractFromTime Mengurangi jumlah unit waktu dari tanda waktu. Lihat juga getPastTime.
ticks Mengembalikan nilai properti ticks untuk tanda waktu tertentu.
utcNow Mengembalikan tanda waktu saat ini sebagai string.

Contoh terperinci untuk latihan

Alur salin Azure Data Factory terperinci dengan parameter

Tutorial meneruskan parameter alur salin Azure Data Factory ini memandu Anda pada cara meneruskan parameter antara alur dan aktivitas serta di antara aktivitas.

Alur aliran data Pemetaan terperinci dengan parameter

Silakan ikuti aliran data Pemetaan dengan parameter untuk contoh komprehensif tentang cara menggunakan parameter dalam aliran data.

Alur yang digerakkan Metadata dengan parameter terperinci

Silakan ikuti Alur yang digerakkan Metadata dengan parameter untuk mempelajari lebih lanjut tentang cara menggunakan parameter untuk merancang alur yang digerakkan metadata. Ini adalah kasus penggunaan populer untuk parameter.

Untuk daftar variabel sistem yang dapat Anda gunakan dalam ekspresi, lihat Variabel sistem.