Parameter konteks node adalah mekanisme inti dalam DataWorks untuk meneruskan data dinamis antar node task. Node hulu (producer) dapat meneruskan nilai output-nya ke satu atau beberapa node hilir, yang kemudian dapat mereferensikan nilai tersebut dalam kodenya untuk menyesuaikan perilaku secara dinamis berdasarkan output dari node hulu. Fitur ini sangat meningkatkan fleksibilitas dan otomatisasi alur kerja Anda.
Cara kerja
Parameter konteks node meneruskan nilai dengan mendefinisikan parameter output pada node hulu (producer) dan mereferensikannya pada node hilir (consumer).
-
Node hulu (producer): Menghasilkan suatu nilai dan menyediakannya sebagai parameter output. Terdapat dua cara untuk menyediakan nilai:
-
Meneruskan konstanta atau variabel: Di bagian Node Output Parameters pada node hulu, definisikan parameter dan tetapkan nilainya. Nilai tersebut dapat berupa konstanta, seperti
'abc', atau variabel konteks sistem, seperti${status}. -
Meneruskan hasil assignment: Sistem menangkap hasil kueri terakhir dari kode node, seperti
SELECT 'table_A';, menetapkannya ke parameter output bawaan bernamaoutputs, lalu meneruskan nilai parameter ini ke node hilir. Nilai parameter bergantung pada hasil runtime kode tersebut. Metode ini didukung oleh Assignment nodes dan beberapa SQL nodes.
-
-
Node hilir (consumer): Menerima dan menggunakan nilai yang diberikan oleh node hulu.
-
Konfigurasikan parameter input: Di bagian Node Input Parameters pada node hilir, tambahkan parameter input dan atur sumber nilainya ke parameter output dari node hulu.
-
Buat dependensi penjadwalan: Setelah Anda mengonfigurasi parameter input, sistem secara otomatis membuat dependensi penjadwalan siklus yang sama dari node hilir ke node hulu.
-
Referensikan dalam kode: Dalam kode node hilir, referensikan nilai tersebut menggunakan format
${InputParameterName}. Sebagai contoh, jika node hulu meneruskan nilaitable_A, maka kode hilirSELECT * FROM ${input};akan menjadiSELECT * FROM table_A;saat runtime.
-
Batasan
-
Edition: Beberapa node mendukung fitur Add Assignment Parameter, yang digunakan untuk meneruskan hasil kueri. Fitur ini memerlukan DataWorks Standard Edition atau edisi yang lebih baru.
-
Tipe Node: Tipe node yang mendukung fitur Add Assignment Parameter adalah: EMR Hive, EMR Spark SQL, ODPS Script, Hologres SQL, AnalyticDB for PostgreSQL, ClickHouse SQL, dan database nodes.
Prosedur
Langkah 1: Konfigurasikan node hulu untuk menghasilkan parameter output
-
Login ke DataWorks console. Alihkan ke wilayah tujuan. Di panel navigasi sebelah kiri, klik . Pilih ruang kerja yang diinginkan dari daftar drop-down dan klik Go to DataStudio.
-
Di panel Data Development, klik ganda node hulu target untuk membuka halaman editornya.
-
Di sisi kanan kanvas, klik Scheduling Settings. Di bagian Node Context Parameters, pilih metode untuk mengonfigurasi Node Output Parameters sesuai kebutuhan.
Metode 1: Meneruskan konstanta atau variabel
-
Di bagian Output Parameters of This Node, klik Add Parameter.
-
Konfigurasikan informasi parameter.
Parameter
Deskripsi
Parameter Name
Nama kustom untuk parameter output, misalnya
my_param.Parameter Value
Nilai parameter. Jenis berikut didukung:
-
Konstanta: seperti
hello. -
Variabel konteks sistem: seperti
${status}. -
Parameter penjadwalan: seperti
$bizdate, atau parameter penjadwalan kustom${...}dan$[...].
-
Metode 2: Meneruskan hasil assignment
-
Gunakan assignment node
Assignment node (node hulu) mendukung MaxCompute SQL, Python 2, dan Shell. Node ini secara otomatis menetapkan hasil kueri atau output terakhir ke parameter output node (outputs). Node hilir kemudian dapat mereferensikan parameter ini untuk mengambil hasil output dari assignment node. Untuk informasi selengkapnya, lihat Assignment node.
-
Gunakan parameter penetapan
Pada node yang mendukung assignment parameter, lakukan langkah-langkah berikut:
-
Di bagian Node Output Parameters, klik Add Assignment Parameter.
-
Sistem secara otomatis menambahkan parameter output bernama
outputs. Anda tidak perlu mengonfigurasi parameter ini. Nilainya adalah hasil kueri terakhir dari kode node tersebut. -
Klik Save.
CatatanSetelah Anda mengklik Add Assignment Parameter, assignment parameter akan meneruskan hasil kueri node ini ke semua node hilir yang mereferensikannya. Jika hasilnya kosong, eksekusi node ini tidak diblokir, tetapi node hilir yang mereferensikan parameter tersebut mungkin gagal.
Untuk contoh spesifik, lihat contoh bahasa MaxCompute di Assignment node.
-
Parameter output dapat dihapus. Sebelum menghapus parameter output, pastikan tidak ada node hilir yang menggunakannya. Jika tidak, eksekusi task hilir akan terpengaruh.
Langkah 2: Konfigurasikan node hilir untuk menggunakan parameter
-
Konfigurasikan parameter input
-
Buka halaman editor node hilir. Buka halaman konfigurasi . Di bagian Node Input Parameters, klik Add Parameter.
-
Konfigurasikan parameter input. Pilih parameter output dari node hulu sebagai Value Source untuk parameter ini, dan definisikan Parameter Name untuk node ini.
-
Di bilah alat, klik Save untuk menyimpan parameter.
-
-
Buat dependensi
Setelah Anda menyambungkan parameter output dari node hulu, sistem secara otomatis menambahkan dependensi siklus yang sama pada node tersebut. Anda tidak perlu mengonfigurasinya secara manual.
-
Parameter referensi
Dalam kode node hilir, referensikan parameter menggunakan format
${InputParameterName}.Contoh berikut menunjukkan cara mereferensikan parameter input
paramdalam node Shell:echo "The value from upnode is ${param}"Jika node hulu meneruskan hasil assignment ke node hilir, nilai parameter biasanya berupa array dua dimensi atau array satu dimensi yang dipisahkan koma. Anda dapat mengakses nilai dalam array sebagai berikut:
-
Jika node hulu adalah node SQL (array dua dimensi):
-
Baris:
${param}. -
Sel:
${param[j]}.
-
-
Jika node hulu adalah node Python/Shell (array satu dimensi):
Baris:${param}.
Semua indeks dimulai dari 0.
-
Langkah 3: Debug dan jalankan
Parameter konteks hanya diteruskan dalam urutan penjadwalan pada instance berulang yang dipicu oleh alur kerja. Menjalankan node hilir secara independen gagal mengambil parameter hulu dan menyebabkan task gagal. Saat melakukan debug, Anda harus memulai dari node hulu dan mengeksekusi node sesuai urutan alur bisnis.
-
Kembali ke alur kerja. Di bilah alat di atas alur kerja, klik Run, atau klik kanan node hilir dan pilih Run to this node.
-
Pada instance grafik asiklik terarah (DAG) yang dihasilkan, klik sebuah node untuk melihat log operasionalnya dan periksa apakah hasilnya sesuai harapan.
Variabel konteks sistem
|
Variabel Sistem |
Deskripsi |
|
${projectId} |
ID Proyek. |
|
${projectName} |
Nama proyek MaxCompute. |
|
${nodeId} |
ID node. |
|
${gmtdate} |
Waktu pukul 00:00:00 pada hari waktu terjadwal instance. Formatnya adalah yyyy-MM-dd 00:00:00. |
|
${taskId} |
ID instans task. |
|
${seq} |
Nomor urut instans task, yang menunjukkan urutannya di antara instans dari node yang sama pada hari yang sama. |
|
${cyctime} |
Waktu yang dijadwalkan untuk instance. |
|
${status} |
Status instance: sukses (SUCCESS) atau gagal (FAILURE). |
|
${bizdate} |
Waktu data. |
|
${finishTime} |
Waktu akhir instance. |
|
${taskType} |
Tipe runtime instance: Normal (NORMAL), Manual (MANUAL), Pause (PAUSE), Dry-run (SKIP), Not Selected (UNCHOOSE), atau Skip Cycle (SKIP_CYCLE). |
|
${nodeName} |
Nama node. |