Parameter konteks node merupakan mekanisme inti dalam DataWorks untuk meneruskan data dinamis antar node tugas. Node hulu (produsen) dapat meneruskan nilai 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. Pendekatan ini secara signifikan meningkatkan fleksibilitas dan otomatisasi alur kerja Anda.
Cara kerja
Parameter konteks node meneruskan nilai dengan mendefinisikan parameter output pada node hulu (produsen) dan mereferensikannya pada node hilir (konsumen).
Node hulu (produsen): Menghasilkan 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 penugasan: Sistem mengambil 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 waktu proses kode tersebut. Metode ini didukung oleh Assignment nodes dan beberapa SQL nodes.
Node hilir (konsumen): Menerima dan menggunakan nilai yang disediakan 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}. Misalnya, jika node hulu meneruskan nilaitable_A, maka kode hilirSELECT * FROM ${input};akan menjadiSELECT * FROM table_A;saat waktu proses.
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 tinggi.
Node Type: Jenis 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
Masuk ke DataWorks console. Alihkan ke wilayah tujuan. Di panel navigasi sebelah kiri, klik . Pilih ruang kerja yang diinginkan dari daftar drop-down, lalu klik Go to DataStudio.
Di panel Data Development, klik ganda node hulu target untuk membuka halaman editor-nya.
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 penugasan
Gunakan assignment node
Assignment node (sebagai 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 lebih lanjut, 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 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 tugas 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 penugasan ke node hilir, nilai parameter biasanya berupa larik dua dimensi atau larik satu dimensi yang dipisahkan koma. Anda dapat mengakses nilai-nilai dalam larik tersebut sebagai berikut:
Jika node hulu adalah node SQL (larik dua dimensi):
Baris:
${param}.Sel:
${param[j]}.
Jika node hulu adalah node Python/Shell (larik satu dimensi):
Baris:${param}.
Semua indeks dimulai dari 0.
Langkah 3: Debug dan jalankan
Parameter konteks hanya diteruskan dalam urutan penjadwalan pada instans berulang yang dipicu oleh alur kerja. Menjalankan node hilir secara mandiri gagal mengambil parameter hulu dan menyebabkan tugas 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 instans 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 00:00:00 pada hari waktu terjadwal instans. Formatnya adalah yyyy-MM-dd 00:00:00. |
${taskId} | ID instans tugas. |
${seq} | Nomor urut instans tugas, yang menunjukkan urutannya di antara instans dari node yang sama pada hari yang sama. |
${cyctime} | Waktu terjadwal instans. |
${status} | Status instans: sukses (SUCCESS) atau gagal (FAILURE). |
${bizdate} | Waktu data. |
${finishTime} | Waktu akhir instans. |
${taskType} | Jenis waktu proses instans: Normal (NORMAL), Manual (MANUAL), Pause (PAUSE), Dry-run (SKIP), Not Selected (UNCHOOSE), atau Skip Cycle (SKIP_CYCLE). |
${nodeName} | Nama node. |