Membuat ekspresi dalam aliran data pemetaan

Azure Data Factory Azure Synapse Analytics

Petunjuk

Data Factory di Microsoft Fabric adalah generasi Azure Data Factory berikutnya, dengan arsitektur yang lebih sederhana, AI bawaan, dan fitur baru. Jika Anda baru menggunakan integrasi data, mulailah dengan Fabric Data Factory. Beban kerja ADF yang ada dapat ditingkatkan ke Fabric untuk mengakses kemampuan baru di seluruh ilmu data, analitik real time, dan pelaporan.

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.

Pembuat Ekspresi

Buka Penyusun Ekspresi

Ada beberapa titik masuk untuk membuka pembangun 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.

Buka Expression Builder untuk derivasi

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

Kotak biru ekspresi

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

Opsi kolom terhitung

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

Menambah opsi konten dinamis

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.

Elemen ekspresi

Functions

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 alamat array

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.

Array Pembangun Ekspresi

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-nilai yang diteruskan ke aliran data pada waktu berjalan dari pipeline. Untuk mengacu pada parameter, pilih parameter dari tampilan elemen Ekspresi atau gunakan 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 informasi lebih lanjut, lihat cache sinks.

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

outputs() tidak menerima parameter dan mengembalikan seluruh penyimpanan 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.

Cache pencarian

Penduduk setempat

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.

Buat lokal

Variabel Lokal dapat mereferensikan elemen ekspresi apa pun termasuk fungsi, skema input, parameter, dan lokal lainnya. Ketika mereferensikan referensi lainnya, urutan merupakan hal yang penting karena referensi yang dirujuk harus berada "di atas" referensi saat ini.

Buat lokal 2

Untuk merujuk ke lokal dalam suatu transformasi, pilih lokal dari tampilan elemen Ekspresi atau rujuk 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.

Menggunakan variabel lokal

Pratinjau hasil ekspresi

Jika mode debug diaktifkan, Anda dapat menggunakan kluster debug secara interaktif untuk melihat hasil 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.

Pratinjau dalam proses

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.

Komentar dalam kotak teks transformasi

Ekspresi reguler

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 papan ketik

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 dalam 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 diberikan dalam hitungan detik, kalikan dengan 1.000.

toTimestamp(1574127407*1000l)

Akhiran "l" di akhir ekspresi sebelumnya menandakan konversi ke tipe long sebagai sintaksis inline.

Cari 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

Pemrosesan aliran data hingga mencapai 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 bagian milidetik (217), tetapi ketika Anda menjalankan aliran data secara end to end, bagian milidetik (217) juga diproses. Anda dapat menggunakan toString(myDateTimeColumn) sebagai ekspresi dan melihat data dengan presisi penuh dalam pratinjau. Proses tanggal dan waktu sebagai jenis tanggal dan waktu, bukan sebagai string, untuk semua tujuan praktis.

Mulai membangun ekspresi transformasi data.