Membuat ekspresi dalam aliran data pemetaan

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 pemetaan aliran data, banyak properti transformasi dimasukkan sebagai ekspresi. Ekspresi ini terdiri dari nilai kolom, parameter, fungsi, operator, dan literal yang mengevaluasi ke jenis data Spark pada waktu proses. Pemetaan aliran data memiliki pengalaman khusus yang bertujuan untuk membantu Anda dalam membuat ekspresi ini yang disebut Penyusun Ekspresi. Menggunakan penyelesaian kode IntelliSense untuk penyorotan, pemeriksaan sintaks, dan pelengkapan otomatis, penyusun ekspresi dirancang untuk memudahkan pembuatan aliran data. Artikel ini menjelaskan cara menggunakan penyusun ekspresi untuk membuat logika bisnis Anda secara efektif.

Expression Builder

Buka Penyusun Ekspresi

Ada beberapa titik entri untuk membuka penyusun ekspresi. Ini semua tergantung pada konteks spesifik transformasi aliran data. Kasus penggunaan yang paling umum adalah dalam transformasi seperti kolom turunan dan agregat di mana pengguna membuat atau memperbarui kolom menggunakan bahasa ekspresi aliran data. Penyusun ekspresi dapat dibuka dengan memilih Buka penyusun ekspresi di atas daftar kolom. Anda juga dapat memilih konteks kolom dan membuka penyusun ekspresi langsung ke ekspresi tersebut.

Open Expression Builder derive

Dalam beberapa transformasi seperti filter, mengklik kotak teks ekspresi biru membuka penyusun ekspresi.

Blue expression box

Saat Anda mereferensikan kolom dalam kondisi pencocokan atau pengelompokan, ekspresi dapat mengekstrak nilai dari kolom. Untuk membuat ekspresi, pilih kolom Komputasi.

Computed column option

Dalam kasus di mana ekspresi atau nilai literal adalah input yang valid, pilih Tambahkan konten dinamis untuk membuat ekspresi yang dievaluasi ke nilai literal.

Add dynamic content option

Elemen ekspresi

Dalam pemetaan aliran data, ekspresi dapat terdiri dari nilai kolom, parameter, fungsi, variabel lokal, operator, dan literal. Ekspresi ini harus mengevaluasi ke jenis data Spark seperti string, boolean, atau bilangan bulat.

Expression elements

Fungsi

Pemetaan aliran data memiliki fungsi dan operator bawaan yang dapat digunakan dalam ekspresi. Untuk daftar fungsi yang tersedia, lihat referensi bahasa aliran data pemetaan.

Fungsi Buatan Pengguna (Pratinjau)

Pemetaan alur data mendukung pembuatan dan penggunaan fungsi yang ditentukan pengguna. Untuk melihat cara membuat dan menggunakan fungsi yang ditentukan pengguna, lihat fungsi yang ditentukan pengguna.

Indeks array alamat

Saat Anda berhadapan dengan kolom atau fungsi yang mengembalikan jenis array, gunakan tanda kurung siku ([]) untuk mengakses elemen tertentu. Jika indeks tidak ada, ekspresi akan dievaluasi ke menjadi NULL.

Expression Builder array

Penting

Dalam pemetaan aliran data, array didasarkan pada satu, yang artinya elemen pertama direferensikan oleh indeks satu. Misalnya, myArray[1] akan mengakses elemen pertama dari array yang disebut 'myArray'.

Skema input

Jika aliran data Anda menggunakan skema yang ditentukan di salah satu sumbernya, Anda dapat mereferensikan kolom menurut nama dalam banyak ekspresi. Jika Anda menggunakan penyimpangan skema, Anda dapat mereferensikan kolom secara eksplisit menggunakan byName() fungsi atau byNames() atau pencocokan menggunakan pola kolom.

Nama kolom dengan karakter khusus

Saat Anda memiliki nama kolom yang menyertakan karakter khusus atau spasi, kelilingi nama dengan kurung kurawal untuk mereferensikannya dalam ekspresi.

{[dbo].this_is my complex name$$$}

Parameter

Parameter adalah nilai yang diteruskan ke aliran data pada waktu proses dari alur. Untuk mereferensikan parameter, pilih parameter dari tampilan elemen Ekspresi atau referensikan dengan tanda dolar di depan namanya. Misalnya, parameter yang disebut parameter1 dirujuk oleh $parameter1. Untuk mempelajari lebih lanjut, lihat membuat parameter pemetaan aliran data.

Cache pencarian

Pencarian yang di-cache memungkinkan Anda melakukan pencarian sebaris dari output sink yang di-cache. Ada dua fungsi yang dapat digunakan pada setiap sink, lookup() dan outputs(). Sintaks untuk mereferensikan fungsi-fungsi ini adalah cacheSinkName#functionName(). Untuk mengetahui informasi lebih lanjut, lihat sink cache.

lookup() mengambil kolom yang cocok dalam transformasi saat ini sebagai parameter dan menampilkan kolom kompleks yang sama dengan baris yang cocok dengan kolom kunci di sink cache. Kolom kompleks yang ditampilkan berisi subkolom untuk setiap kolom yang dipetakan di sink cache. Misalnya, jika Anda memiliki sink cache kode galat errorCodeCache yang memiliki kolom kunci yang cocok dengan kode dan kolom bernama Message. Memanggil errorCodeCache#lookup(errorCode).Message akan menampilkan pesan yang sesuai dengan kode yang diteruskan.

outputs() tidak mengambil parameter dan mengembalikan seluruh penyimpan cache sebagai array kolom kompleks. Ini tidak dapat dipanggil jika kolom kunci ditentukan di sink dan hanya boleh digunakan jika ada beberapa baris di sink cache. Kasus penggunaan yang umum adalah menambahkan nilai maksimal dari kunci yang bertambah. Jika baris agregat tunggal yang di-cache CacheMaxKeyberisi kolomMaxKey, Anda dapat mereferensikan nilai pertama dengan memanggil CacheMaxKey#outputs()[1].MaxKey.

Cached lookup

Lokal

Jika Anda berbagi logika di beberapa kolom atau ingin menggabungkan logika, Anda dapat membuat variabel lokal. Lokal adalah sekumpulan logika yang tidak disebarkan ke hilir ke transformasi berikut. Lokal dapat dibuat di dalam penyusun ekspresi dengan masuk ke Elemen ekspresi dan memilih Lokal. Buat yang baru dengan memilih Buat baru.

Create local

Variabel Lokal dapat mereferensikan elemen ekspresi apa pun termasuk fungsi, skema input, parameter, dan lokal lainnya. Ketika mereferensikan lokal lainnya, urutan bukanlah masalah karena lokal yang direferensikan harus "di atas" yang sudah ada saat ini.

Create local 2

Untuk mereferensikan lokal dalam transformasi, pilih lokal dari tampilan elemen Ekspresi atau referensikan dengan titik dua di depan namanya. Misalnya, lokal bernama lokal1 akan direferensikan oleh :local1. Untuk mengedit definisi lokal, arahkan mouse ke atasnya dalam tampilan elemen ekspresi dan pilih ikon pensil.

Using locals

Pratinjau hasil ekspresi

Jika mode debug diaktifkan, Anda dapat menggunakan kluster debug secara interaktif untuk melihat pratinjau evaluasi ekspresi Anda. Pilih Refresh di samping pratinjau data untuk memperbarui hasil pratinjau data. Anda dapat melihat output dari setiap baris yang diberikan kolom input.

In-progress preview

Interpolasi string

Saat membuat string panjang yang menggunakan elemen ekspresi, gunakan interpolasi string untuk membuat logika string kompleks dengan mudah. Interpolasi string menghindari penggunaan ekstensif rangkaian string saat parameter disertakan dalam string kueri. Gunakan tanda kutip ganda untuk menyertakan teks string literal bersama dengan ekspresi. Anda dapat menyertakan fungsi ekspresi, kolom, dan parameter. Untuk menggunakan sintaks ekspresi, sertakan dalam kurung kurawal,

Beberapa contoh interpolasi string:

  • "My favorite movie is {iif(instr(title,', The')>0,"The {split(title,', The')[1]}",title)}"

  • "select * from {$tablename} where orderyear > {$year}"

  • "Total cost with sales tax is {round(totalcost * 1.08,2)}"

  • "{:playerName} is a {:playerRating} player"

Catatan

Saat menggunakan sintaks interpolasi string dalam kueri sumber SQL, string kueri harus berada dalam satu baris, tanpa '/n'.

Ekspresi komentar

Tambahkan komentar ke ekspresi Anda dengan menggunakan sintaks komentar satu baris dan multibaris.

Berikut adalah contoh komentar yang valid:

  • /* This is my comment */

  • /* This is a

  • multi-line comment */

Jika Anda meletakkan komentar di bagian atas ekspresi Anda, komentar akan muncul di kotak teks transformasi untuk mendokumentasikan ekspresi transformasi Anda.

Comment in the transformation text box

Regex

Banyak fungsi bahasa ekspresi menggunakan sintaks ekspresi reguler. Saat Anda menggunakan fungsi ekspresi reguler, Penyusun Ekspresi mencoba menafsirkan garis miring terbalik (\) sebagai urutan karakter keluar. Saat Anda menggunakan garis miring terbalik dalam ekspresi reguler Anda, sertakan seluruh regex dalam tanda garis miring terbalik (`) atau gunakan garis miring terbalik ganda.

Contoh yang menggunakan backticks:

regex_replace('100 and 200', `(\d+)`, 'digits')

Contoh yang menggunakan garis miring ganda:

regex_replace('100 and 200', '(\\d+)', 'digits')

Pintasan keyboard

Di bawah ini adalah daftar pintasan yang dapat digunakan di penyusun ekspresi. Sebagian besar pintasan intellisense tersedia saat membuat ekspresi.

  • Ctrl+K Ctrl+C: Komentari seluruh baris.
  • Ctrl+K Ctrl+U: Hapus komentar.
  • F1: Berikan perintah bantuan editor.
  • Alt+Tombol panah bawah: Pindahkan garis saat ini ke bawah.
  • Alt+Tombol panah atas: Pindahkan baris saat ini ke atas.
  • Ctrl+Spasi: Tampilkan bantuan konteks.

Ekspresi yang umum digunakan

Mengonversi ke tanggal atau tanda waktu

Untuk menyertakan literal string dalam output tanda waktu Anda, bungkus konversi Anda di toString().

toString(toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss'), 'MM/dd /yyyy\'T\'HH:mm:ss')

Untuk mengonversi milidetik dari epoch ke tanggal atau tanda waktu, gunakan toTimestamp(<number of milliseconds>). Jika waktu datang dalam hitungan detik, kalikan dengan 1.000.

toTimestamp(1574127407*1000l)

Akhiran "l" di akhir ekspresi sebelumnya menandakan konversi ke jenis panjang sebagai sintaks sebaris.

Menemukan waktu dari epoch atau Waktu Unix

toLong( currentTimestamp() - toTimestamp('1970-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS') ) * 1000l

Evaluasi waktu aliran data

Aliran data memproses hingga milidetik. Untuk 2018-07-31T20:00:00.2170000, Anda akan melihat 2018-07-31T20:00:00.217 dalam output. Di portal untuk layanan, tanda waktu ditampilkan di pengaturan browser saat ini, yang dapat menghilangkan 217, tetapi ketika Anda akan menjalankan aliran data secara end to end, 217 (bagian milidetik juga diproses). Anda dapat menggunakan toString(myDateTimeColumn) sebagai ekspresi dan melihat data presisi penuh dalam pratinjau. Proses tanggalwaktu sebagai tanggalwaktu dibandingkan untai untuk semua tujuan praktis.

Mulai membangun ekspresi transformasi data.