Node do-while beroperasi seperti pernyataan do-while dalam bahasa pemrograman: menjalankan alur kerja internal dalam sebuah loop dan mengevaluasi kondisi keluar di akhir setiap iterasi. Loop dijalankan minimal satu kali sebelum kondisi diperiksa. Anda dapat menggunakan node do-while secara mandiri atau mengombinasikannya dengan node assignment untuk melakukan iterasi atas sebuah result set.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki ruang kerja DataWorks Edisi Standar atau lebih tinggi—node do-while tidak tersedia di Edisi Dasar. Lihat Perbedaan antar edisi DataWorks untuk detail selengkapnya.
Membaca Komposisi dan orkestrasi alur kerja node do-while untuk memahami cara mengonfigurasi alur kerja internal.
Membaca Variabel bawaan untuk memahami variabel yang tersedia di dalam loop.
Membaca Contoh kode untuk node akhir sebagai referensi implementasi kondisi keluar.
Membaca Pertimbangan penting untuk memahami cara menguji node do-while dan melihat log eksekusinya.
Batasan
| Constraint | Detail |
|---|---|
| Edition | Hanya tersedia di DataWorks Edisi Standar dan lebih tinggi |
| Maximum loops | Maksimal 1.024 iterasi per instans node |
| Parallel execution | Tidak didukung — setiap loop hanya dimulai setelah loop sebelumnya selesai |
Cara kerja
Node do-while memiliki tiga komponen bawaan:
| Component | Role | Can be deleted? |
|---|---|---|
| Start node | Menandai awal setiap iterasi; tidak menjalankan logika bisnis | Tidak |
| Shell node | Node pemrosesan bisnis contoh yang disediakan oleh DataWorks; dapat diganti dengan jenis node lain | Tidak (ganti dengan jenis node lain sesuai kebutuhan) |
| End node | Mengevaluasi kondisi keluar; mengembalikan True untuk melanjutkan atau False untuk menghentikan | Tidak |
Eksekusi mengikuti urutan berikut pada setiap iterasi:
Start node memberi sinyal awal loop.
Node internal dijalankan sesuai urutan dependensi.
End node mengevaluasi kondisi keluar.
Jika end node mengembalikan
True, iterasi berikutnya dimulai. Jika mengembalikanFalse, loop berakhir.
Variabel bawaan yang tersedia untuk semua node internal:
| Variable | Description | Starting value |
|---|---|---|
${dag.loopTimes} | Jumlah iterasi saat ini | 1 |
${dag.offset} | Offset jumlah iterasi saat ini dari angka 1 | 0 |
Node internal mereferensikan parameter input dan output yang dikonfigurasi pada node do-while menggunakan ${dag.<parameter name>}.
Buat node do-while
Buka halaman DataStudio. Masuk ke Konsol DataWorks. Di bilah navigasi atas, pilih Wilayah yang diinginkan. Di panel navigasi kiri, pilih Data Development and Governance > Data Development. Pada halaman yang muncul, pilih ruang kerja yang diinginkan dari daftar tarik-turun, lalu klik Go to Data Development.
Buat node tersebut. Arahkan kursor ke ikon
lalu pilih Create Node > General > do-while. Atau, temukan alur kerja target di panel kiri, klik nama alur kerja tersebut, klik kanan General, lalu pilih Create Node > do-while.Pada kotak dialog Create Node, atur parameter Name dan Path, lalu klik Confirm.
Contoh: lakukan loop lima kali dan cetak jumlah iterasi
Contoh ini menjalankan node do-while tepat lima kali iterasi. Pada setiap iterasi, shell node mencetak nomor loop saat ini.
Edit shell node
Klik ganda shell node untuk membuka tab konfigurasinya.
Masukkan kode berikut di editor kode:
echo ${dag.loopTimes} ----Tampilkan jumlah loop saat ini.${dag.loopTimes}adalah variabel tercadang bawaan yang menyimpan jumlah iterasi saat ini, dimulai dari 1. Semua node internal node do-while dapat mereferensikannya. Untuk contoh penggunaan, lihat Variabel bawaan dan Contoh nilai variabel.Simpan node tersebut.
PentingSimpan setelah setiap perubahan kode. Jika Anda melakukan commit tanpa menyimpan, versi yang dikomit tidak akan mencakup perubahan terbaru Anda.
Konfigurasi end node
Klik ganda end node untuk membuka tab konfigurasinya.
Pilih Python dari daftar drop-down Language.
Masukkan kondisi keluar berikut:
if ${dag.loopTimes}<5: print True; else: print False;Kondisi ini membandingkan
dag.loopTimesdengan5. Pada iterasi kelima,dag.loopTimesbernilai5, sehingga${dag.loopTimes}<5dievaluasi sebagaiFalsedan loop berhenti. Iterasi 1 hingga 4 mengembalikanTruedan melanjutkan loop.
Commit dan deploy node do-while
Klik ikon
di bilah alat atas untuk menyimpan node.Klik ikon
untuk melakukan commit node. Pada kotak dialog Submit, isi Change description. Sebelum melakukan commit, konfigurasikan parameter Rerun dan Parent Nodes pada tab Properties.Aktifkan Tinjauan kode untuk memvalidasi kode task sebelum penerapan. Node yang telah dikomit hanya dapat diterapkan setelah lolos tinjauan kode. Lihat Tinjauan kode.
Jika ruang kerja Anda berada dalam mode standar, klik Deploy di pojok kanan atas tab konfigurasi node untuk menerapkan node ke lingkungan produksi. Lihat Deploy tasks.
Uji node dan lihat log eksekusi
Node do-while tidak dapat diuji secara langsung di DataStudio. Lakukan commit dan deploy alur kerja ke Operation Center, lalu jalankan dan periksa di sana.
Jika node do-while menggunakan nilai dari node assignment, jalankan kedua node tersebut (assignment dan do-while) selama pengujian.
Pada tab konfigurasi node do-while, klik Operation Center di bilah alat atas.
Di panel navigasi kiri, pilih Cycle Task Maintenance > Cycle Task.
Temukan node do-while lalu klik DAG di kolom Actions.
Pada grafik asiklik terarah (DAG), klik kanan node assignment lalu pilih Run > Current and Descendant Nodes Retroactively. Konfigurasikan parameter pada kotak dialog Backfill Data, lalu klik OK.
Segarkan halaman Patch Data. Setelah instans pengisian ulang data berhasil dijalankan, klik DAG di kolom Actions pada instans do-while.
Lihat log eksekusi.
Klik kanan node do-while lalu pilih View Internal Nodes. Tampilan node internal memiliki tiga panel:
Pane Content Kiri Riwayat rerun — satu catatan per eksekusi instans node do-while Tengah Daftar catatan loop — semua iterasi beserta statusnya Kanan Detail iterasi — klik catatan loop untuk melihat instans node di dalamnya Di panel tengah, klik loop yang telah selesai. Di panel kanan, klik kanan node yang diinginkan lalu pilih View Runtime Log.
Klik Loop 5 di panel tengah untuk melihat log eksekusi shell node pada loop kelima.
Langkah berikutnya
Untuk meneruskan data antara alur kerja luar dan node internal, konfigurasikan parameter input dan output pada node do-while. Node internal mereferensikannya menggunakan
${dag.<parameter name>}.Untuk melakukan iterasi atas sebuah result set, kombinasikan node do-while dengan node assignment. Gunakan
${dag.offset}(dimulai dari 0) untuk mengindeks setiap baris.Node do-while selalu menjalankan minimal satu iterasi sebelum mengevaluasi kondisi keluar, sesuai perilaku pernyataan do-while. Node ini tidak mendukung pemeriksaan awal seperti loop while. Untuk mencapai perilaku for-each, gunakan
${dag.offset}dan konfigurasikan parameter input/output secara sesuai.