Dalam alur kerja data yang kompleks, seringkali diperlukan untuk melewatkan informasi dinamis antar node. Meskipun metode umum adalah menggunakan tabel antara, pendekatan ini tidak efisien untuk jumlah data kecil karena menambah I/O dan kompleksitas yang tidak perlu. Node penugasan memberikan solusi ringan: ia mengeksekusi skrip pendek (MaxCompute SQL, Python 2, atau Shell) dan meneruskan outputnya secara langsung sebagai parameter ke node hilir. Hal ini memungkinkan Anda membangun pipa fleksibel di mana tugas-tugas dikonfigurasi secara dinamis berdasarkan hasil dari tugas hulu.
Catatan penggunaan
Edisi: DataWorks Edisi Standar atau lebih tinggi.
Izin: Anda perlu memiliki peran Development atau Workspace Manager di ruang kerja DataWorks Anda. Untuk informasi lebih lanjut, lihat Menambahkan anggota ke ruang kerja.
Cara kerjanya
Fungsi inti dari node penugasan adalah penerusan parameter: mentransfer data dari node penugasan ke node hilir.
Node penugasan menghasilkan data dengan secara otomatis menetapkan output terakhir atau hasil kueri ke parameter output sistem bernama
outputs.Node hilir mengonsumsi data tersebut. Anda mengonfigurasinya untuk menggunakan
outputsdengan menambahkan parameter input node (misalnya,param).
Format parameter
Nilai dan format parameter outputs bergantung pada bahasa skrip yang digunakan:
Bahasa | Nilai | Format |
MaxCompute SQL | Output dari pernyataan | Set hasil dilewatkan sebagai array dua dimensi. |
Python 2 | Output dari pernyataan | Output diperlakukan sebagai string tunggal, yang kemudian dipisahkan oleh koma ( |
Shell | Output dari pernyataan |
Prosedur
Hasil dari node penugasan dapat dilewatkan ke semua jenis node hilir. Contoh berikut mendemonstrasikan alur kerja ini menggunakan node Shell.
Konfigurasikan Node Penugasan
Dalam alur kerja Anda, buat dan edit node penugasan. Pilih MaxCompute SQL, Python 2, atau Shell sesuai kebutuhan, dan tulis kode.

Konfigurasikan Node Shell

Buat node Shell.
Di panel Scheduling di sebelah kanan, pilih tab Input and Output Parameters.
Di bagian Input Parameters, klik Create Parameter.
Tetapkan nama parameter untuk parameter input, seperti
paramdan atur nilainya menjadi parameteroutputs.CatatanSetelah konfigurasi ini, DataWorks secara otomatis membuat dependensi antara node Shell dan node penugasan.
Setelah mengonfigurasi parameter, Anda dapat mereferensikan nilai yang dilewatkan dalam skrip Shell Anda menggunakan format
${param}.
Jalankan dan Verifikasi
Di kanvas alur kerja, klik Deploy di bilah alat atas dan pilih full deployment.
Navigasikan ke .
Jalankan tes asap pada alur kerja target Anda dan verifikasi bahwa hasilnya sesuai harapan.
Keterbatasan
Parameter hanya dapat dilewatkan ke node hilir langsung.
Batas ukuran: Parameter
outputstidak boleh melebihi 2 MB, jika tidak, node penugasan akan gagal.Keterbatasan sintaksis:
Jangan sertakan komentar dalam kode node. Komentar dapat mengganggu penguraian output dan menyebabkan node gagal atau menghasilkan nilai yang salah.
Klausa
WITHtidak didukung dalam mode MaxCompute SQL.
Contoh berdasarkan bahasa
Format data outputs dan metode referensi bervariasi berdasarkan bahasa.
Contoh 1: Melewatkan hasil kueri MaxCompute SQL
Hasil kueri SQL dilewatkan ke node Shell sebagai array dua dimensi.
Node Penugasan
Asumsikan kode SQL mengembalikan dua baris dan dua kolom:
SELECT 'value1', 'value2' UNION ALL SELECT 'value3', 'value4';Node Shell
Tambahkan parameter input bernama
paramyang mereferensikanoutputsdari node penugasan. Gunakan skrip berikut untuk membaca data:# Output seluruh array 2D echo "Set hasil lengkap: ${param}" # Output baris pertama (array 1D) echo "Baris pertama: ${param[0]}" # Output bidang kedua dari baris pertama echo "Bidang kedua dari baris pertama: ${param[0][1]}"Output yang Diharapkan
DataWorks mengurai parameter dan melakukan penggantian statis, menghasilkan output berikut:
Set hasil lengkap: value1,value2 value3,value4 Baris pertama: value1,value2 Bidang kedua dari baris pertama: value2
Contoh 2: Melewatkan output Python 2
Output dari pernyataan print Python 2 dipisahkan oleh koma (,) dan dilewatkan sebagai array satu dimensi.
Node Penugasan
Kode Python 2 adalah sebagai berikut:
print "hello,dataworks";Node Shell
Tambahkan parameter input bernama
paramyang mereferensikanoutputsdari node penugasan. Gunakan skrip berikut untuk membaca data:# Output seluruh array 1D echo "Set hasil lengkap: ${param}" # Output elemen berdasarkan indeks echo "Elemen pertama: ${param[0]}" echo "Elemen kedua: ${param[1]}"Output yang Diharapkan
DataWorks mengurai parameter dan melakukan penggantian statis, menghasilkan output berikut:
Set hasil lengkap: "hello","dataworks" Elemen pertama: hello Elemen kedua: dataworks
Contoh 3: Melewatkan output Shell
Output dari pernyataan echo Shell dipisahkan oleh koma (,) dan dilewatkan sebagai array satu dimensi.
Node Penugasan
Kode Shell adalah sebagai berikut:
echo "hello,dataworks";Node Shell
Tambahkan parameter input bernama
paramyang mereferensikanoutputsdari node penugasan. Gunakan skrip berikut untuk membaca data:# Output seluruh array 1D echo "Set hasil lengkap: ${param}" # Output elemen berdasarkan indeks echo "Elemen pertama: ${param[0]}" echo "Elemen kedua: ${param[1]}"Output yang Diharapkan
DataWorks mengurai parameter dan melakukan penggantian statis, menghasilkan output berikut:
Set hasil lengkap: "hello","dataworks" Elemen pertama: hello Elemen kedua: dataworks
Kasus penggunaan lainnya
Penggunaan dengan node loop
Saat node hilir adalah node for-each atau do-while, lihat node for-each dan node do-while.
Penetapan parameter bawaan di jenis node lain
Node penugasan hanya mendukung MaxCompute SQL, Python 2, dan Shell. Namun, untuk banyak jenis node lainnya, Anda dapat menggunakan fitur penetapan parameter bawaan mereka untuk mencapai tujuan yang sama dan menyederhanakan alur kerja Anda. Node-node ini termasuk: EMR Hive, Hologres SQL, EMR Spark SQL, AnalyticDB untuk PostgreSQL, ClickHouse SQL, dan MySQL.

FAQ
T: Mengapa saya mendapatkan kesalahan "find no select sql in sql assignment!"?
J: Kesalahan ini terjadi karena node penugasan dalam mode MaxCompute SQL memerlukan pernyataan SELECT untuk menghasilkan nilai outputnya. Untuk menyelesaikan masalah ini, pastikan skrip Anda mencakup pernyataan SELECT.