Parameter konteks node merupakan mekanisme inti di DataWorks untuk meneruskan data dinamis antar node task. Parameter ini memungkinkan node hulu (produsen) meneruskan output-nya ke satu atau beberapa node hilir, yang kemudian dapat mereferensikan nilai tersebut dalam kodenya guna menyesuaikan perilaku secara dinamis berdasarkan output dari node hulu. Proses ini secara signifikan meningkatkan fleksibilitas dan otomatisasi alur kerja.
Cara kerja
Parameter konteks node meneruskan nilai antar node. Node hulu (produsen) mendefinisikan parameter output, sedangkan node hilir (konsumen) mereferensikan parameter tersebut untuk mengambil nilainya.
Node hulu (produsen): Menghasilkan nilai dan menetapkannya sebagai parameter output. Nilai tersebut dapat ditentukan dengan salah satu dari dua cara berikut:
Pass konstanta atau variabel: Di bagian Node output parameters pada node hulu, Anda dapat mendefinisikan parameter dan memberikan nilainya, baik berupa konstanta seperti
'abc'maupun variabel konteks sistem seperti${status}.Pass hasil assignment: Sistem menangkap hasil kueri terakhir dalam kode node—misalnya,
SELECT 'table_A';—dan menetapkannya ke parameter output bawaan bernamaoutputs. Nilai parameter ini kemudian diteruskan ke node hilir dan bergantung pada hasil eksekusi kode saat runtime. Metode ini didukung oleh Assignment node dan beberapa SQL node.
Node hilir (konsumen): Mengambil dan menggunakan nilai yang diberikan oleh node hulu.
Konfigurasikan parameter input: Di bagian Node input parameters pada node hilir, tambahkan parameter input dan tetapkan sumber nilainya ke parameter output dari node hulu.
Buat dependensi penjadwalan: Setelah parameter input dikonfigurasi, sistem secara otomatis membuat dependensi penjadwalan siklus yang sama dari node hilir ke node hulu.
Referensikan parameter dalam kode: Dalam kode node hilir, referensikan nilai yang diambil menggunakan format
${InputParameterName}. Misalnya, jika node hulu meneruskan nilaitable_A, maka kodeSELECT * FROM ${input};pada node hilir 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 lebih tinggi.
Jenis node: Jenis node yang mendukung fitur Add Assignment Parameter meliputi: EMR Hive, EMR Spark SQL, ODPS Script, Hologres SQL, AnalyticDB for PostgreSQL, ClickHouse SQL, serta jenis database node.
Prosedur
Langkah 1: Konfigurasi node hulu untuk mengeluarkan parameter
Masuk ke DataWorks console. Setelah beralih ke Wilayah tujuan, pilih di panel navigasi sebelah kiri. Dari daftar drop-down, pilih ruang kerja yang diinginkan dan klik Go to Data Studio.
Di panel Data Studio, klik ganda node hulu target untuk membuka halaman editor-nya.
Di sisi kanan kanvas, klik Scheduling. Di bagian Input and Output Parameters, konfigurasikan Node Output Parameters dengan salah satu cara berikut.
Metode 1: Pass konstanta atau variabel
Di bagian Node Output Parameters, klik Add Parameter.
Konfigurasikan parameter tersebut.
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 seperti${...}atau$[...].
Metode 2: Pass hasil assignment
Gunakan node penugasan
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 output dari assignment node. Untuk informasi selengkapnya, lihat Assignment node.
Gunakan assignment parameter
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 dalam kode node.Klik Save.
CatatanSetelah Anda mengklik Add Assignment Parameter, assignment parameter akan meneruskan hasil kueri node saat ini ke node hilir yang mereferensikannya. Jika hasilnya kosong, node saat ini tidak diblokir, tetapi node hilir yang mereferensikan parameter tersebut mungkin gagal.
Penggunaannya mirip dengan cara bahasa MaxCompute digunakan dalam assignment node.
Parameter output dapat dihapus. Sebelum menghapus parameter output, pastikan parameter tersebut tidak digunakan oleh node hilir mana pun. Jika tidak, task hilir yang bergantung padanya akan gagal.
Langkah 2: Konfigurasi node hilir untuk menggunakan parameter
Konfigurasikan parameter input
Buka halaman editor untuk node hilir dan arahkan ke bagian . Di bagian Node input parameters, klik Add Parameter.
Konfigurasikan parameter input. Pilih parameter output dari node hulu sebagai Value Source dan tentukan Parameter Value untuk node saat ini.
Di bilah alat, klik Save untuk menambahkan parameter.
Buat dependensi
Setelah Anda bind parameter input ke parameter output node hulu, sistem secara otomatis menambahkan dependensi siklus yang sama ke node hulu tersebut. Tidak diperlukan konfigurasi manual.
Merujuk ke parameter
Dalam kode node hilir, Anda dapat mereferensikan 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 mengambil nilai dari array sebagai berikut:
Jika node hulu adalah SQL node (array dua dimensi):
Baris:
${param}.Sel:
${param[j]}.
Jika node hulu adalah node Python/Shell (array satu dimensi):
Baris:${param}.
Indeks dimulai dari 0.
Langkah 3: Debug dan jalankan
Parameter konteks diteruskan sesuai urutan penjadwalan hanya pada instance berulang yang dipicu oleh alur kerja. Jika Anda menjalankan node hilir secara independen, node tersebut tidak dapat mengambil parameter hulu, sehingga menyebabkan task gagal. Saat melakukan debug, Anda harus memulai dari node hulu dan menjalankan node sesuai urutan proses 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 DAG yang dihasilkan, klik sebuah node untuk melihat log eksekusinya dan verifikasi bahwa hasilnya sesuai harapan.
Variabel konteks sistem
Variabel Sistem | Deskripsi |
${projectId} | ID Proyek. |
${projectName} | Nama proyek MaxCompute. |
${nodeId} | ID node. |
${gmtdate} | Awal hari (00:00:00) ketika instance dijadwalkan berjalan. Formatnya adalah yyyy-MM-dd 00:00:00. |
${taskId} | ID instans task. |
${seq} | Nomor urut instans task. Nomor ini menunjukkan urutan instans ini di antara instans lain dari node yang sama yang berjalan pada hari yang sama. |
${cyctime} | Waktu terjadwal untuk instance. |
${status} | Status instance: SUCCESS atau FAILURE. |
${bizdate} | Timestamp data. |
${finishTime} | Waktu saat instance selesai berjalan. |
${taskType} | Jenis eksekusi instance: NORMAL, MANUAL, PAUSE, SKIP (dry-run), UNCHOOSE, atau SKIP_CYCLE (cycle dry-run). |
${nodeName} | Nama node. |