全部产品
Search
文档中心

DataWorks:for-each node

更新时间:Nov 10, 2025

DataWorks menyediakan node for-each yang dapat digunakan untuk melakukan loop melalui set hasil dari node assignment. Anda juga dapat mengatur ulang proses bisnis di dalam node for-each. Topik ini menjelaskan komponen dan logika node for-each.

Pengenalan node

Node for-each di DataWorks digunakan untuk skenario yang memerlukan loop. Node ini harus digunakan bersama dengan node assignment yang dikonfigurasi sebagai node leluhurnya. Node for-each melakukan loop melalui output yang diteruskan dari node assignment tersebut.

Prasyarat

  • Pengguna RAM yang ingin Anda gunakan telah ditambahkan ke ruang kerja Anda.

    Jika Anda ingin menggunakan pengguna RAM untuk mengembangkan tugas, Anda harus menambahkan pengguna RAM tersebut ke ruang kerja Anda sebagai anggota dan memberikan peran Develop atau Workspace Administrator kepada pengguna RAM tersebut. Peran Workspace Administrator memiliki izin yang lebih luas daripada yang diperlukan. Berhati-hatilah saat memberikan peran ini. Untuk informasi selengkapnya tentang cara menambahkan anggota dan memberikan peran, lihat Tambahkan anggota ke ruang kerja.

  • Kelompok sumber daya arsitektur tanpa server telah dikaitkan dengan ruang kerja Anda. Untuk informasi selengkapnya, lihat topik dalam direktori Gunakan kelompok sumber daya arsitektur tanpa server.

Batasan

  • Hanya DataWorks Edisi Standar dan edisi yang lebih tinggi yang mendukung node for-each. Untuk informasi selengkapnya, lihat Fitur edisi DataWorks.

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

Perhatian

Dimensi

Kategori

Deskripsi

Ketergantungan hulu dan hilir

Pengaturan dependensi

Node for-each perlu melakukan loop melalui nilai yang diteruskan oleh node assignment. Oleh karena itu, node assignment harus dikonfigurasi sebagai node leluhur dari node for-each. Node for-each harus bergantung pada node assignment tersebut.

Dukungan traversal

Jumlah maksimum loop

Node for-each harus digunakan bersama dengan node assignment. Pertama, ikat parameter konteks ke parameter loopDataArray pada panel konfigurasi penjadwalan. Kemudian, atur orkestrasi logika node dalam isi loop. Jumlah maksimum loop adalah 128. Jumlah loop aktual ditentukan oleh set hasil yang dihasilkan oleh node assignment.

Jumlah loop

Ditentukan oleh set hasil yang dihasilkan oleh node assignment.

Node internal

Orkestrasi alur

  • Anda dapat menghapus dependensi antara node internal dalam node for-each dan mengatur ulang proses bisnis internal. Namun, Anda harus menetapkan Start Node dan End Node sebagai node pertama dan terakhir dalam proses bisnis internal.

  • Jika Anda menggunakan node branch dalam node internal node for-each untuk membuat keputusan logis atau melakukan traversed terhadap suatu hasil, Anda juga harus menggunakan node merge.

Pengambilan nilai

Variabel bawaan disediakan untuk mendapatkan nilai tertentu dari node assignment hulu.

Debugging

Debugging Pekerjaan

  • Dalam mode standar, Anda tidak dapat langsung menguji dan menjalankan node for-each di antarmuka DataStudio.

    Untuk menguji dan memverifikasi hasil eksekusi node for-each, Anda harus melakukan commit dan memublikasikan tugas yang berisi node for-each ke Pusat Operasi di lingkungan pengembangan. Kemudian, jalankan tugas node for-each di Pusat Operasi.

  • Jalankan node assignment dan node for-each secara bersamaan. Saat Anda melakukan operasi pengisian ulang data untuk tugas yang dipicu otomatis di Pusat Operasi, mulailah pengisian ulang data dari node assignment. Hal ini akan mengeksekusi baik node assignment maupun node for-each. Jangan mengeksekusi node for-each secara terpisah.

Lihat log

Untuk melihat log eksekusi node for-each di Pusat Operasi, klik kanan instans tersebut dan klik View Internal Nodes untuk melihat log eksekusi node internal.

Variabel bawaan

Anda dapat menggunakan metode berikut dalam node internal node for-each untuk mengambil set hasil dari node assignment eksternal. Jika alur kerja internal node for-each berisi node assignment, Anda dapat mengambil nilai di dalam node for-each menggunakan metode default untuk node hilir. Untuk informasi selengkapnya tentang cara mengambil nilai dari node hilir, lihat Node assignment.

  • Saat node for-each di DataWorks melakukan loop melalui output dari node assignment, Anda dapat menggunakan variabel bawaan untuk mengambil jumlah loop saat ini dan offset-nya.

    Variabel bawaan

    Deskripsi

    Perbandingan dengan loop for

    ${dag.loopDataArray}

    Mendapatkan set data dari node assignment.

    Ambil contoh kode loop for berikut:

    for(int i=0;i<data.length;i++) {
       print(data[i]);
    }
    • ${dag.loopDataArray} setara dengan data.

    • ${dag.foreach.current} setara dengan data[i].

    • ${dag.offset} setara dengan i.

    • ${dag.loopTimes} setara dengan i+1.

    ${dag.foreach.current}

    Mendapatkan nilai traversed saat ini.

    ${dag.offset}

    Offset saat ini. Ini adalah offset setiap traversed relatif terhadap traversed pertama.

    ${dag.loopTimes}

    Mendapatkan jumlah traversed saat ini.

  • Jika Anda mengetahui struktur tabel output, Anda dapat menggunakan variabel berikut untuk mengambil nilai lainnya.

    Variabel lainnya

    Deskripsi

    ${dag.foreach.current[n]}

    Jika output dari node assignment hulu berupa larik dua dimensi, variabel ini mendapatkan data kolom tertentu pada baris data saat ini selama setiap traversed.

    ${dag.loopDataArray[i][j]}

    Jika output dari node assignment hulu berupa larik dua dimensi, variabel ini mendapatkan data pada baris i dan kolom j dari set data.

Deskripsi pengembangan node for-each

Node for-each adalah jenis node khusus yang berisi node internal. Setelah membuat node for-each, klik ganda node tersebut untuk mengonfigurasi isi loop-nya. Buat dan atur node di dalam isi loop untuk membentuk alur kerja internal. Alur kerja ini melakukan loop melalui output dari node assignment hulu.

  • Tetapkan dependensi node.

    Node for-each harus bergantung pada node assignment. Untuk informasi selengkapnya tentang cara membuat node assignment, lihat Node assignment.

  • Tetapkan set hasil.

    Parameter output bawaan Node Context outputs dari node assignment harus digunakan sebagai parameter input Node Context untuk node for-each. Untuk detail konfigurasi, lihat Node Assignment.

  • Ambil parameter untuk node internal node for-each.

    Anda dapat menyesuaikan proses bisnis internal node for-each sesuai kebutuhan. Gunakan variabel bawaan dalam node proses internal untuk mengambil nilai parameter yang diperlukan dan menjalankan tugas loop.

Catatan

Anda tidak dapat menguji node for-each di DataStudio.

1. Konfigurasi node assignment

  1. Setelah membuka node assignment, alihkan bahasa ke Shell di pojok kanan bawah.

  2. Pada halaman editor, masukkan pernyataan uji berikut:

    echo 'this is name,ok';
  3. Setelah konfigurasi selesai, konfigurasikan properti penjadwalan untuk node assignment. Untuk informasi selengkapnya, lihat Konfigurasi properti penjadwalan untuk node. Untuk melihat parameter outputs dari node assignment, lihat Kembangkan node assignment.

  4. Setelah mengonfigurasi properti penjadwalan, klik ikon image di bilah alat untuk menyimpan node assignment.

2. Konfigurasi node for-each

Buka node for-each. Secara default, node ini berisi node awal image, node akhir image, dan isi loop for-each. Untuk mengonfigurasi node for-each, Anda harus mengonfigurasi isi loop-nya.

  1. Klik Create Internal Node di dalam isi loop, pilih Shell dari daftar drop-down, lalu beri nama node Shell tersebut.

  2. Edit node Shell.

    1. Klik node Shell yang telah Anda buat di dalam isi loop, klik kanan node tersebut, lalu pilih Open Node untuk membuka halaman editor node.

    2. Kembangkan node Shell:

      echo ${dag.loopTimes} ----Cetak jumlah loop.
      Catatan
      • Logika node awal image dan node akhir image dari node for-each bersifat tetap dan tidak dapat diedit.

      • Anda harus menyimpan kode di node Shell setelah melakukan modifikasi. Sistem tidak akan memberi peringatan untuk menyimpan perubahan saat Anda melakukan commit node. Jika Anda tidak menyimpan perubahan, kode tidak akan diperbarui.

      Node for-each mendukung empat variabel lingkungan berikut:

      • ${dag.foreach.current}: Baris data saat ini yang sedang dilakukan traversed.

      • ${dag.loopDataArray}: Set data input.

      • ${dag.offset}: Offset.

      • ${dag.loopTimes}: Jumlah loop saat ini. Nilainya adalah ${dag.offset}+1.

    3. Klik ikon image di bilah alat untuk menyimpan node Shell di dalam isi loop.

  3. Konfigurasi node for-each.

    1. Kembali ke tab node for-each dan klik Scheduling di panel sebelah kanan.

    2. Pada bagian Scheduling Parameters, pada baris parameter loopDataArray, klik Bind. Ikat outputs dari node assignment hulu ke parameter tersebut.

      Penting

      Node assignment kini ditambahkan sebagai dependensi hulu dari node for-each.

  4. Setelah konfigurasi selesai, kembali ke alur kerja. Konfigurasikan jadwal untuk node for-each dan publikasikan node tersebut. Untuk informasi selengkapnya, lihat Konfigurasi properti penjadwalan untuk node dan Publikasikan node.

3. Uji node dan lihat hasilnya

  1. Setelah node dipublikasikan, node tersebut akan berjalan secara berkala berdasarkan konfigurasi penjadwalannya. Anda dapat membuka Operation Center > Task O&M > Cycle Task O&M > Cycle Task untuk melihat tugas yang dipicu otomatis yang telah dipublikasikan dan melakukan operasi O&M.

  2. Pada halaman Cycle Task, temukan node assignment yang merupakan node leluhur dari node for-each dan lakukan operasi Data Backfill > Current And Descendant Nodes. Untuk informasi selengkapnya, lihat Isi ulang data dan lihat instans pengisian ulang data (versi baru).