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 |
|
Pengambilan nilai | Variabel bawaan disediakan untuk mendapatkan nilai tertentu dari node assignment hulu. | |
Debugging | Debugging Pekerjaan |
|
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 dengandata[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.
Anda tidak dapat menguji node for-each di DataStudio.
1. Konfigurasi node assignment
Setelah membuka node assignment, alihkan bahasa ke Shell di pojok kanan bawah.
Pada halaman editor, masukkan pernyataan uji berikut:
echo 'this is name,ok';Setelah konfigurasi selesai, konfigurasikan properti penjadwalan untuk node assignment. Untuk informasi selengkapnya, lihat Konfigurasi properti penjadwalan untuk node. Untuk melihat parameter
outputsdari node assignment, lihat Kembangkan node assignment.Setelah mengonfigurasi properti penjadwalan, klik ikon
di bilah alat untuk menyimpan node assignment.
2. Konfigurasi node for-each
Buka node for-each. Secara default, node ini berisi node awal
, node akhir
, dan isi loop for-each. Untuk mengonfigurasi node for-each, Anda harus mengonfigurasi isi loop-nya.
Klik Create Internal Node di dalam isi loop, pilih Shell dari daftar drop-down, lalu beri nama node Shell tersebut.
Edit node Shell.
Klik node Shell yang telah Anda buat di dalam isi loop, klik kanan node tersebut, lalu pilih Open Node untuk membuka halaman editor node.
Kembangkan node Shell:
echo ${dag.loopTimes} ----Cetak jumlah loop.CatatanLogika node awal
dan node akhir
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.
Klik ikon
di bilah alat untuk menyimpan node Shell di dalam isi loop.
Konfigurasi node for-each.
Kembali ke tab node for-each dan klik Scheduling di panel sebelah kanan.
Pada bagian Scheduling Parameters, pada baris parameter loopDataArray, klik Bind. Ikat outputs dari node assignment hulu ke parameter tersebut.
PentingNode assignment kini ditambahkan sebagai dependensi hulu dari node for-each.
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
Setelah node dipublikasikan, node tersebut akan berjalan secara berkala berdasarkan konfigurasi penjadwalannya. Anda dapat membuka untuk melihat tugas yang dipicu otomatis yang telah dipublikasikan dan melakukan operasi O&M.
Pada halaman Cycle Task, temukan node assignment yang merupakan node leluhur dari node for-each dan lakukan operasi . Untuk informasi selengkapnya, lihat Isi ulang data dan lihat instans pengisian ulang data (versi baru).