Makro dan fungsi makro

Makro adalah placeholder dalam properti plugin Cloud Data Fusion konfigurasi standar. Elemen tersebut diwakili oleh variabel yang disertakan dalam ${ }, seperti ${input_file_path}. Untuk mengaktifkan konfigurasi dinamis untuk elemen, seperti file jalur dan nama tabel, {i>placeholder<i} diganti dengan nilai sebenarnya di waktu beroperasi.

Saat melihat properti plugin, Anda dapat menambahkan makro ke kolom properti mana pun yang memiliki tanda M di sampingnya. Untuk menambahkan makro, klik M.

Untuk informasi selengkapnya, lihat Mengelola makro, preferensi, dan argumen runtime.

Fungsi makro

Selain makro, Anda dapat menggunakan fungsi makro standar berikut:

  • logicalStartTime()
  • secure()

Fungsi Waktu Mulai Logis

Fungsi makro logicalStartTime() menampilkan waktu mulai yang logis dari suatu lari pipeline sebagai nilai string.

Jika tidak ada parameter yang diberikan, waktu mulai akan ditampilkan dalam milidetik. Semua parameter bersifat opsional. Fungsi tersebut mengambil format waktu, offset, dan zona waktu sebagai argumen dan menggunakan waktu mulai pipeline yang logis untuk melakukan substitusi:

${logicalStartTime([timeFormat[,offset [,timezone])}

Daftar berikut menunjukkan parameter opsional untuk logicalStartTime():

Parameter Deskripsi
timeFormat Pola format waktu, dalam format SimpleDateFormat Java.
offset
Offset waktu sebelum waktu mulai yang logis.
timezone
Zona waktu yang akan digunakan untuk waktu mulai yang logis.

Contoh

Dalam contoh ini, waktu mulai logis dari proses pipeline adalah 2020-01-01T00:00:00 dan Anda memberikan makro berikut:

${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss,1d-4h+30m)}

Formatnya adalah yyyy-MM-dd'T'HH-mm-ss dan offsetnya adalah 1d-4h+30m sebelum waktu mulai yang logis. Saat runtime, nilai makro diganti dengan 2019-12-31T03:30:00 karena offsetnya berarti 20,5 jam. Seluruh makro mengevaluasi ke 20, 5 jam sebelum tengah malam pada 1 Januari 2020.

Menggunakan logicalStartTime() pada plugin berbasis file

Cara paling umum untuk menggunakan fungsi ini adalah di kolom Path dalam file berbasis plugin.

Menyertakan waktu mulai pipeline dalam milidetik dalam nama file

Untuk merekam waktu mulai sebenarnya dalam milidetik dalam nama file, hilangkan parameter dalam fungsi makro.

Contoh

Dalam contoh ini, Anda menyertakan waktu mulai pipeline, dalam milidetik, dalam Nama file Amazon S3:

sales_012345671011.csv

Di properti sink Amazon S3, masukkan nilai berikut di kolom Path bidang:

s3a://sales-data/sales_${logicalStartTime()}.csv

Menyertakan tanggal hari ini dalam nama {i>file<i}

Anda dapat menggunakan fungsi makro logicalStartTime() dalam nama file untuk merekam tanggal saat ini.

Contoh

Dalam contoh ini, Anda mengambil tanggal hari ini dalam nama file S3 berikut:

s3a://sales-data/sales_20210204.csv

Di properti sink Amazon S3, masukkan nilai berikut di kolom Path bidang:

s3a://sales-data/sales_${logicalStartTime(yyyyMMdd)}.csv

Menggunakan logicalStartTime untuk menambahkan kolom Stempel waktu ke data terstruktur

Anda dapat menambahkan stempel waktu ke data terstruktur menggunakan Tambahkan Kolom transformasi dan logicalStartTime().

  1. Dapatkan plugin Transformasi Adder Kolom dari Cloud Data Fusion Hub. Setelah di-deploy, plugin akan muncul dalam daftar Transform sebagai Add Kolom.
  2. Saat Anda mengonfigurasi properti plugin, tambahkan stempel waktu ke —misalnya, untuk nama kolom, masukkan nama dan untuk nilai kolom, masukkan makro logicalStartTime() .

Fungsi aman

Fungsi makro secure() menggunakan satu kunci sebagai argumen dan mencari nilai string yang terkait dengan kunci dari Secure Store. Untuk melakukan substitusi, kunci yang disediakan sebagai argumen harus sudah ada di Penyimpanan Aman. Hal ini berguna untuk melakukan substitusi dengan data sensitif.

Contoh

Dalam contoh ini, untuk plugin yang terhubung ke database MySQL, Anda mengonfigurasi kolom properti {i>password<i} dengan nilai berikut:

${secure(password)}

Makro ini mengambil sandi dari Secure Store saat runtime.

Makro rekursif

Makro dapat merujuk ke makro lain secara rekursif hingga sepuluh level. Makro argumen dievaluasi dari argumen yang terdalam hingga yang terluar.

Contoh

Dalam contoh ini, Anda memiliki server yang mengacu ke nama {i>host<i} dan porta. Anda menyediakan argumen runtime berikut, yang terakhir adalah makro yang merujuk ke makro lain:

  • nama host: examplepetstore.com
  • port: 9991
  • alamat-server: ${hostname}:${port}

Dalam konfigurasi pipeline, Anda menggunakan ekspresi berikut:

server-address: ${server-address}

Saat runtime, atribut tersebut diganti dengan nilai berikut:

examplepetstore.com:9991

Langkah selanjutnya