全部產品
Search
文件中心

DataWorks:配置for-each節點

更新時間:Jun 19, 2024

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節點

  4. 遍曆節點不支援在DataStudio測試

    請進入營運中心操作,需要右鍵查看內部節點來查看詳細執行過程。詳情請參見測試並查看測試結果

    說明

    在營運中心執行任務時,選擇補資料功能,並同時選中執行賦值節點與遍曆節點,單獨運行遍曆節點將無法擷取到賦值節點傳遞的值。

建立和配置商務程序

您需要建立一個上遊為賦值節點,下遊為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參數。

    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參數,單擊儲存

      outputs

      說明

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

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

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

    重要

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

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

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

測試並查看測試結果

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

  2. 在左側導覽列,單擊周期任務營運 > 周期任務

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

    補資料

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

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

    賦值節點結果

  6. 補資料執行個體頁面,按右鍵遍曆節點,選中查看內部節點

    內部節點

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

    作業記錄

    在作業記錄頁面,查看第1次迴圈時,Shell節點的日誌。1

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

    2