全部產品
Search
文件中心

DataWorks:配置for-each節點

更新時間:Jun 16, 2026

DataWorks為您提供遍曆節點(for-each節點),您可以通過for-each節點來迴圈遍曆賦值節點傳遞的結果集。同時您也可以重新編排for-each節點內部的商務程序。本文以一個具體樣本,通過for-each節點2次迴圈遍曆賦值節點輸出結果,並在每次迴圈遍曆時列印當前迴圈次數,為您介紹for-each節點的邏輯原理與操作流程。

前提條件

在配置節點前,請先瞭解相關介紹,避免任務配置過程出錯。詳情請參見for-each節點邏輯原理介紹

操作流程

使用遍曆節點時,通常與賦值節點一起使用,操作流程如下所示。

遍曆節點

  1. 設定節點依賴關係

    for-each遍曆節點需要依賴賦值節點。配置詳情可參考文檔:建立和配置商務程序

  2. 賦值結果集

    賦值節點內建的節點上下文輸出參數outputs,需作為for-each遍曆節點的節點上下文輸入參數。配置詳情可參考文檔:配置賦值節點

  3. 遍曆節點的內部節點擷取參數

    根據業務需求自訂for-each遍曆節點的內部商務程序,並在內部流程的節點中通過內建變數來擷取所需參數值,運行迴圈遍曆任務。內建變數的詳情請參見內建變數,配置詳情請參見配置for-each節點

建立和配置商務程序

您需要建立一個上遊為賦值節點,下遊為for-each節點的商務程序:

  1. 進入資料開發頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的數據開發與營運 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 建立周期商務程序

  3. 建立for-each節點。

    1. 滑鼠移至上方至建立表徵圖,單擊新建節點 > 通用 > for-each

      您也可以找到相應的商務程序,按右鍵通用,選擇新建節點 > for-each

    2. 新建節點對話方塊中,輸入節點名稱、路徑等資訊。

    3. 單擊確認

  4. 建立賦值節點。

    1. 雙擊商務程序,進入商務程序的編輯頁面,單擊+建立節點,將通用 > 賦值節點拖拽至右側的編輯地區。

      賦值節點的介紹請參見賦值節點

    2. 新建節點對話方塊中,輸入節點名稱、路徑(預設在當前商務程序目錄下)。

    3. 單擊確認

  5. 通過拖拽連線,設定賦值節點為for-each節點的上遊節點。

配置賦值節點

  1. 雙擊賦值節點名稱,進入節點的編輯頁面。

  2. 請選擇賦值語言列表中,選中Shell

  3. 在節點編輯頁面,輸入以下語句。

    echo 'this is name,ok';
  4. 單擊節點編輯頁面右側的調度配置,在節點上下文參數 > 本節點輸出參數地區查看預設輸出的outputs參數。

  5. 單擊工具列中的儲存表徵圖,儲存賦值節點。

  6. 單擊工具列中的提交表徵圖,提交賦值節點。

    提交時需在提交對話方塊中輸入變更描述,並根據需要選擇是否在節點提交後執行程式碼檢閱。

    重要
    • 您需要設定節點的重跑屬性依賴的上游節點,才可以提交節點。

    • 程式碼檢閱可對任務的代碼品質進行把控,防止由於任務代碼有誤,未經審核直接發布上線後出現任務報錯。如進行程式碼檢閱,則提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱

    如您使用的是標準模式的工作空間,任務提交成功後,需單擊節點編輯頁面右上方的發布,將該任務發布至生產環境執行,操作請參見發布任務

配置for-each節點

  1. 雙擊for-each節點,進入節點編輯頁面,預設包含start、shell和end三個節點。

    您可根據需求,替換Shell節點為其他節點:

    • 如需使用Shell節點,則直接配置Shell節點即可。

    • 如果您需要使用其它類型的節點,請先刪除預設的Shell節點,再建立其他類型節點。

    本文樣本使用Shell節點。

  2. 編輯Shell節點。

    1. 雙擊Shell節點,進入節點編輯頁面。

    2. 輸入以下代碼。

      echo ${dag.loopTimes} ----列印迴圈的次數。
      說明
      • for-each節點的start節點和end節點的邏輯是固定的,不可以編輯。

      • Shell節點中的代碼修改後請務必儲存,提交時不會進行提示。如果未儲存,最新的代碼不能及時更新。

      for-each節點支援以下四種環境變數:

      • ${dag.foreach.current}:當前遍曆到的資料行。

      • ${dag.loopDataArray}:輸入的資料集。

      • ${dag.offset}:位移量。

      • ${dag.loopTimes}:當前迴圈次數,值為${dag.offset}+1

      變數詳情請參見內建變數內建變數取值案例

  3. 配置for-each節點。

    1. 在for-each節點的編輯頁面,單擊右側的調度配置

    2. 節點上下文參數 > 本節點輸入參數地區,單擊預設參數名loopDataArray後的編輯

    3. 取值來源列表中,選擇上遊賦值節點的outputs參數,單擊保存

      說明

      您在調度配置中添加上遊賦值節點的依賴關係後,請手動添加取值來源。如果未添加取值來源,提交節點時會報錯。

  4. 單擊工具列的儲存表徵圖,儲存for-each節點。

  5. 單擊工具列的提交表徵圖,提交for-each節點。

    重要

    您需要設定節點的重跑屬性依賴的上游節點,才可以提交節點。

    提交對話方塊中,選中需要提交的節點,單擊確定

    如果您使用的是標準模式的工作空間,提交成功後,請單擊右上方的发布。具體操作請參見發布任務

測試並查看測試結果

  1. 單擊頁面右上方的運維,進入運維中心

  2. 在左側導覽列,單擊周期任务运维 > 周期任務

  3. 選中相應的節點,在右側的DAG圖中,按右鍵賦值節點,選中補資料 > 當前節點及下游節點

  4. 重新整理補數據實例頁面,待補資料執行個體運行成功後,單擊執行個體後的DAG圖

  5. 按右鍵賦值節點,選中查看作業記錄,確認賦值結果。

    作業記錄顯示賦值節點執行成功,Shell 輸出為 this is name,ok,賦值結果被解析為 ["this is name", "ok"] 兩條資料記錄,for-each-節點將基於這兩條資料進行迴圈遍曆。

  6. 補數據實例頁面,按右鍵遍曆節點,選中查看內部節點

  7. 在內部節點頁面,單擊左側的第1次,並按右鍵Shell節點,選中查看作業記錄

    在作業記錄頁面,查看第1次迴圈時,Shell節點的日誌。日誌中 Shell 輸出為 1,即當前迴圈次數(${dag.loopTimes} 的值)。

  8. 以同樣的方式,查看第2次迴圈時,Shell節點的日誌。

    日誌中 Shell 輸出為 2,即第 2 次迴圈的迴圈次數(${dag.loopTimes} 的值為 2),驗證 for-each-節點成功遍曆了賦值結果集的兩條資料。