全部产品
Search
文档中心

DataWorks:Logika Node do-while

更新时间:Jul 02, 2025

DataWorks menyediakan node do-while yang memungkinkan Anda mengatur ulang alur kerja di dalamnya, menulis logika untuk dieksekusi dalam loop, dan mengonfigurasi node akhir untuk menentukan keluar dari looping. Node ini dapat digunakan secara mandiri atau bersama dengan node penugasan untuk melakukan iterasi pada set hasil yang dilewatkan oleh node penugasan. Topik ini menjelaskan komposisi dan logika aplikasi dari node do-while.

Informasi Latar Belakang

Tabel berikut menjelaskan catatan penggunaan node do-while.

Deskripsi

Referensi

Sebelum menggunakan node do-while, Anda harus mempelajari batasan dan tindakan pencegahan untuk node do-while, seperti batas maksimum jumlah loop, metode untuk menguji node do-while, dan metode untuk melihat log node do-while.

Batasan dan Tindakan Pencegahan

Anda dapat mengonfigurasi alur kerja internal untuk node do-while berdasarkan kebutuhan bisnis Anda. Saat mengonfigurasi alur kerja internal untuk node do-while, pastikan bahwa alur kerja internal dimulai dengan node awal dan diakhiri dengan node akhir.

Komposisi dan orkestrasi alur kerja node do-while

Node do-while menyediakan variabel bawaan untuk Anda mendapatkan nilai terkait dalam setiap loop. Contoh untuk mendapatkan nilai variabel disediakan sebagai referensi.

Variabel Bawaan dan Contoh Nilai Variabel

Anda dapat menggunakan node akhir untuk menentukan apakah akan keluar dari looping. Kode contoh untuk node akhir disediakan sebagai referensi.

Kode Contoh untuk Node Akhir

Sebelum menggunakan node do-while, Anda harus mempelajari skenario di mana node do-while digunakan.

Skenario

Batasan

  • Hanya DataWorks Edisi Standar dan edisi yang lebih tinggi yang mendukung node do-while. Untuk informasi lebih lanjut, lihat Perbedaan antara Edisi DataWorks.

  • Jumlah maksimum loop untuk node do-while adalah 1.024.

  • Eksekusi paralel tidak didukung. Loop baru hanya dimulai setelah loop sebelumnya selesai.

Tindakan Pencegahan

Dimensi

Item

Deskripsi

Dukungan Loop

Batas atas untuk jumlah loop

Jumlah maksimum loop untuk node do-while adalah 1024. Jika jumlah loop untuk node do-while melebihi 1024, node end mengembalikan False untuk keluar dari looping.

Node Internal

Orkestrasi Alur Kerja

  • Anda dapat menghapus dependensi yang ada antara node internal dari node do-while dan mengonfigurasi alur kerja internal untuk node do-while berdasarkan kebutuhan bisnis Anda. Saat mengonfigurasi alur kerja internal untuk node do-while, pastikan bahwa alur kerja internal dimulai dengan node start dan diakhiri dengan node end.

  • Jika node internal dari node do-while menggunakan node cabang untuk melakukan penilaian logis atau melakukan iterasi pada set hasil yang dilewatkan oleh node penugasan, diperlukan node penggabungan. Untuk informasi tentang node penggabungan, lihat Konfigurasikan Node Penggabungan.

  • Anda tidak dapat menambahkan komentar saat mengembangkan kode untuk node end dari node do-while.

Pengambilan Nilai

Variabel bawaan yang disediakan oleh node do-while dapat digunakan untuk mendapatkan nilai tertentu yang dilewatkan oleh node penugasan yang dikonfigurasi sebagai node leluhur dari node do-while.

Debugging

Pengujian Tugas

Jika Anda menggunakan ruang kerja dalam mode standar, Anda tidak dapat langsung melakukan tes untuk menjalankan node do-while di DataStudio.

Jika Anda ingin melakukan tes untuk memverifikasi hasil eksekusi node do-while, Anda harus mengirimkan dan menerapkan alur kerja yang berisi node do-while ke Pusat Operasi di lingkungan pengembangan dan menjalankan tugas pada node do-while.

Melihat Log

Untuk melihat log eksekusi node do-while di Pusat Operasi, lakukan langkah-langkah berikut: Temukan node do-while dan buka grafik asiklik terarah (DAG) dari node tersebut. Di DAG, klik kanan nama node dan pilih View Internal Nodes.

Ketergantungan

Pengaturan Ketergantungan

Anda dapat menggunakan node do-while secara mandiri, atau menggunakan node do-while bersama dengan node penugasan. Jika Anda ingin memeriksa apakah node penugasan melewatkan outputnya ke node do-while di Pusat Operasi, Anda dapat menggunakan fitur pengisian balik data untuk mengisi balik data untuk node penugasan dan node do-while. Jika Anda hanya menjalankan node do-while, Anda tidak dapat memperoleh output dari node penugasan.

Komposisi dan Orkestrasi Alur Kerja Node do-while

Node do-while adalah node khusus yang berisi node internal. Saat membuat node do-while, node internal berikut dibuat secara otomatis: node start, node shell (node tugas), dan node end. Node internal ini diorganisasikan menjadi alur kerja internal untuk looping. 循环节点

Gambar di atas menunjukkan informasi berikut:

  • start node

    Node start menandai awal dari loop dan tidak digunakan untuk memproses tugas loop. Node tugas di dalam node do-while bergantung pada node start, sehingga node start tidak dapat dihapus.

  • shell node

    Saat membuat node do-while, DataWorks secara otomatis membuat node tugas Shell internal bernama shell. Anda dapat menghapus node shell default dan mengonfigurasi node tugas sesuai kebutuhan bisnis Anda.

    Umumnya, node do-while digunakan bersama dengan node penugasan atau dengan node cabang dan node penggabungan. Saat menyesuaikan node tugas dari node do-while, Anda dapat menghapus dependensi antara node internal yang ada dan mengonfigurasi alur kerja internal berdasarkan kebutuhan bisnis Anda. Pastikan alur kerja internal dimulai dengan node start dan diakhiri dengan node end.

  • end node

    • Node end menentukan apakah akan keluar dari looping. Node ini mengontrol jumlah loop yang dapat dijalankan untuk node do-while. Pada dasarnya, node akhir adalah node penugasan yang mengembalikan True atau False. Nilai True menunjukkan untuk menjalankan loop berikutnya, sedangkan nilai False menunjukkan untuk keluar dari looping.

    • Anda dapat menggunakan ODPS SQL, Shell, atau Python 2 untuk mengembangkan kode untuk node end. Node do-while menyediakan variabel bawaan untuk pengembangan kode node akhir. Untuk informasi tentang variabel bawaan, lihat Variabel Bawaan dan Contoh Nilai Variabel. Untuk contoh kode dalam berbagai bahasa, lihat Kode Contoh untuk Node Akhir.

    • Node akhir harus menjadi node turunan dari node tugas dan tidak dapat dihapus.

Variabel Bawaan

Variabel bawaan yang disediakan oleh node do-while dikonfigurasi dalam format ${dag.Nama Variabel}. Node do-while di DataWorks menyediakan dua variabel bawaan: ${dag.loopTimes} dan ${dag.offset}. Anda juga dapat menggunakan node do-while bersama dengan node penugasan untuk mendapatkan nilai parameter penugasan berdasarkan variabel bawaan yang dikonfigurasi dalam format ${dag.Nama Variabel}.

  • Variabel Bawaan

    Anda dapat menggunakan variabel bawaan yang disediakan oleh node do-while di DataWorks untuk mendapatkan jumlah loop yang telah selesai dan offset antara loop saat ini dan loop sebelumnya saat node do-while digunakan untuk looping.

    Variabel Bawaan

    Deskripsi

    Nilai

    ${dag.loopTimes}

    Jumlah loop yang telah selesai.

    1 untuk loop pertama, 2 untuk loop kedua, 3 untuk loop ketiga, ..., dan n untuk loop ke-n.

    ${dag.offset}

    Offset antara loop saat ini dan loop sebelumnya.

    0 untuk loop pertama, 1 untuk loop kedua, 2 untuk loop ketiga, ..., dan n-1 untuk loop ke-n.

  • Mendapatkan Set Hasil yang Dilewatkan oleh Node Penugasan

    Jika Anda menggunakan node do-while bersama dengan node penugasan, Anda dapat memperoleh nilai parameter penugasan dan variabel loop menggunakan variabel bawaan yang dijelaskan dalam tabel berikut.

    Catatan

    Jika node do-while bergantung pada node penugasan, Anda dapat menambahkan parameter output yang ditentukan dalam Parameter Output untuk node penugasan ke Input Parameters untuk node do-while. Kemudian, Anda dapat menggunakan node do-while untuk mendapatkan set hasil yang dilewatkan oleh node penugasan atau data tertentu dalam set hasil. Parameter input dikonfigurasi dalam format ${dag.Nama Variabel}. Ganti nama variabel dengan nama parameter input yang ditentukan dalam Input Parameters untuk node do-while. Dalam variabel bawaan berikut, input menentukan nama input parameter yang didefinisikan dalam node do-while dan digunakan untuk mendapatkan set hasil yang dilewatkan oleh node penugasan. Anda harus mengganti input dengan nama sebenarnya dari parameter input yang Anda gunakan.

    Variabel Bawaan

    Deskripsi

    ${dag.input}

    Dataset yang dilewatkan oleh node penugasan leluhur.

    ${dag.input[${dag.offset}]}

    Entri data yang diperoleh oleh node do-while dalam loop saat ini.

    ${dag.input.length}

    Panjang dataset yang diperoleh di dalam node do-while.

Contoh Nilai Variabel

Format set hasil yang dilewatkan oleh node penugasan bervariasi berdasarkan bahasa penugasan yang digunakan oleh node penugasan. Jika Anda menggunakan node do-while untuk mendapatkan set hasil yang dilewatkan oleh node penugasan dan node penugasan menggunakan bahasa Shell, set hasil atau data tertentu dalam set hasil dilewatkan ke node do-while sebagai array satu dimensi. Jika node penugasan menggunakan bahasa ODPS SQL, set hasil atau data tertentu dalam set hasil dilewatkan ke node do-while sebagai array dua dimensi. Untuk informasi lebih lanjut, lihat Format Output Parameter outputs.

Contoh 1: Node Shell digunakan sebagai node penugasan

  • Output dari node penugasan

    Node Shell digunakan sebagai node penugasan, dan output terakhir dari node penugasan adalah 2021-03-28,2021-03-29,2021-03-30,2021-03-31,2021-04-01.

  • Nilai variabel untuk node do-while

    Variabel Bawaan

    Nilai untuk loop pertama

    Nilai untuk loop kedua

    ${dag.input}

    2021-03-28,2021-03-29,2021-03-30,2021-03-31,2021-04-01

    ${dag.input[${dag.offset}]}

    2021-03-28

    2021-03-29

    ${dag.input.length}

    5

    ${dag.loopTimes}

    1

    2

    ${dag.offset}

    0

    1

Contoh 2: Node ODPS SQL digunakan sebagai node penugasan

  • Output dari node penugasan

    Node ODPS SQL digunakan sebagai node penugasan, dan pernyataan SELECT terakhir mengembalikan dua data berikut:

    +----------------------------------------------+
    | uid            | region         | age_range            | zodiac |
    +----------------------------------------------+
    | 0016359810821  | Hubei Province | 30 to 40 years old   | Cancer |
    | 0016359814159  | Unknown        | 30 to 40 years old   | Cancer |
    +----------------------------------------------+
  • Nilai variabel untuk node do-while

    Variabel Bawaan

    Nilai untuk loop pertama

    Nilai untuk loop kedua

    ${dag.input}

    +----------------------------------------------+
    | uid            | region         | age_range            | zodiac |
    +----------------------------------------------+
    | 0016359810821  | Hubei Province | 30 to 40 years old   | Cancer |
    | 0016359814159  | Unknown        | 30 to 40 years old   | Cancer |
    +----------------------------------------------+

    ${dag.input[${dag.offset}]}

    0016359810821, Hubei Province, 30 to 40 years old, Cancer

    0016359814159, Unknown, 30 to 40 years old, Cancer

    ${dag.input.length}

    2

    Catatan

    Jumlah baris dalam array dua dimensi adalah panjang dataset. Jumlah baris dalam array dua dimensi di output node penugasan adalah 2.

    ${dag.input[0][1]}

    Catatan

    Variabel bawaan ini menentukan nilai di baris pertama dan kolom kedua dari array dua dimensi.

    Hubei Province

    ${dag.loopTimes}

    1

    2

    ${dag.offset}

    0

    1

Kode Contoh untuk Node Akhir

Anda dapat menggunakan ODPS SQL, Shell, atau Python 2 untuk mengembangkan kode untuk node end. Bagian ini menyediakan contoh kode tipikal dalam bahasa-bahasa tersebut.

ODPS SQL

SELECT  CASE 
 WHEN COUNT(1) > 0 AND ${dag.offset}<= 9 
  THEN true 
  ELSE false 
 END 
FROM  xc_dpe_e2.xc_rpt_user_info_d  where dt='20200101';

Dalam kode contoh node akhir di atas, jumlah baris dan offset dibandingkan dengan nilai tetap untuk membatasi jumlah loop yang dapat dijalankan untuk node do-while.

Shell

if [ ${dag.loopTimes} -lt 5 ];
then
     echo "True"
else
     echo "False"
fi

Dalam kode di atas, jumlah loop yang telah selesai dibandingkan dengan 5 untuk membatasi jumlah loop yang dapat dijalankan untuk node do-while. Variabel ${dag.loopTimes} menentukan jumlah loop yang telah selesai.

Nilai variabel ${dag.loopTimes} adalah 1 untuk loop pertama dan bertambah 1 setiap kali. Dalam hal ini, nilai variabel ${dag.loopTimes} adalah 2 untuk loop kedua dan 5 untuk loop kelima. Dalam kode contoh di atas, ketika loop kelima selesai, output node akhir adalah False, dan node do-while keluar dari looping.

Python 2

if ${dag.loopTimes}<${dag.input.length}:
   print True;
else
   print False;
# Mulai loop berikutnya jika node akhir mengembalikan True.
# Keluar dari looping jika node akhir mengembalikan False.

Dalam kode contoh di atas, jumlah loop yang telah selesai dibandingkan dengan jumlah baris dalam dataset yang dilewatkan oleh node penugasan untuk membatasi jumlah loop yang dapat dijalankan untuk node do-while. Variabel ${dag.loopTimes} menentukan jumlah loop yang telah selesai.

Skenario

Menggunakan node do-while bersama dengan node penugasan

Tabel berikut menjelaskan skenario tipikal dan tindakan pencegahan untuk menggunakan node do-while bersama dengan node penugasan.

Skenario

Tindakan Pencegahan

Contoh Konfigurasi

Saat sebuah node do-while digunakan untuk menjalankan tugas loop, setiap kali loop dijalankan, node internal dari node do-while perlu mendapatkan dan menggunakan parameter output dari node leluhur dari node do-while. Dalam hal ini, Anda dapat menggunakan node penugasan, seperti node penugasan bernama assign_node, bersama dengan node do-while.

  • Ketergantungan

    Node do-while harus bergantung pada node penugasan assign_node.

    Catatan

    Node yang bergantung pada node penugasan haruslah node do-while bukan node shell.

  • Parameter input dan output

    • Anda harus menambahkan parameter output dari node penugasan assign_node ke Output Parameters untuk node tersebut.

    • Anda harus menambahkan parameter output dari node penugasan assign_node ke Input Parameters untuk node shell dari node do-while.

      Catatan

      Parameter input harus dikonfigurasikan untuk node shell bukan untuk node do-while.

赋值节点配置案例

Menggunakan node do-while bersama dengan node cabang dan node penggabungan

Tabel berikut menjelaskan skenario tipikal dan tindakan pencegahan untuk menggunakan node do-while bersama dengan node cabang dan node penggabungan.典型应用

Skenario

Tindakan Pencegahan

Node internal dari node do-while perlu melakukan penilaian logis atau traversal hasil. Dalam hal ini, Anda dapat menyesuaikan node tugas di dalam node do-while dan menggunakan node cabang dan node penggabungan bersama dengan node do-while. Sebagai contoh, Anda dapat menggunakan node cabang bernama branch_node dan node penggabungan bernama merge_node.

Dalam alur kerja internal node do-while, node cabang branch_node dan node penggabungan merge_node perlu digunakan secara bersamaan.