全部產品
Search
文件中心

DataWorks:配置並使用節點上下文參數

更新時間:Nov 20, 2025

節點上下文參數是 DataWorks 中實現任務節點間動態資料傳遞的核心機制。它允許一個上遊節點(生產者)將其輸出值傳遞給一個或多個下遊節點,下遊節點接收到這些值後,可以在其代碼邏輯中引用,從而根據上遊的輸出動態調整自身的行為。這極大地增強了工作流程的靈活性和自動化能力。

工作原理

節點上下文參數通過在上遊節點(提供方)定義輸出參數,在下遊節點(使用方)引用該參數,實現值的傳遞。

  • 上遊節點(提供方):負責產生一個值並將其作為輸出參數。提供值的方式有兩種:

    • 傳遞常量或變數:在上遊節點的節點輸出參數地區,定義參數並為其賦值。值可以是常量(如 'abc')或系統上下文變數(如 ${status})。

    • 傳遞賦值結果:系統將節點代碼(如 SELECT 'table_A';)的最後一行查詢結果,捕獲並賦值給一個內建的輸出參數 outputs,然後將這個參數的值傳遞給下遊節點。參數值取決於代碼的運行結果。賦值節點和部分 SQL 類節點支援此方式。

  • 下遊節點(使用方):接收並使用上遊節點提供的值。

    1. 配置輸入參數:在下遊節點的節點輸入參數地區,添加輸入參數,並將其取值來源設定為上遊節點的輸出參數。

    2. 建立調度依賴:配置輸入參數後,系統會自動建立下遊節點對上遊節點的同周期調度依賴。

    3. 在代碼中引用:在下遊節點的代碼中,通過 ${輸入參數名} 的格式引用接收到的值。例如,若上遊節點傳遞了值 table_A,下遊代碼中的 SELECT * FROM ${input}; 在運行時會變為 SELECT * FROM table_A;

使用限制

  • 產品版本:部分節點支援添加賦值參數功能(用於傳遞查詢結果),此功能需DataWorks為標準版及以上版本。

  • 節點類型:支援添加賦值參數功能的節點類型有: EMR Hive、EMR Spark SQL、ODPS Script、Hologres SQL、AnalyticDB for PostgreSQL、ClickHouse SQL 和資料庫節點類型。

操作步驟

步驟一:配置上遊節點以輸出參數

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

  2. 資料開發面板,雙擊開啟目標上遊節點的編輯頁面。

  3. 單擊畫布右側的調度配置,在節點上下文參數地區,根據業務需求,選擇一種方式配置節點輸出參數

方式一:傳遞常量或變數

  1. 本節點輸出參數地區,單擊添加參數

  2. 配置參數資訊。

    參數

    配置說明

    參數名

    自訂輸出參數的名稱,例如 my_param

    參數值

    設定參數的值。支援以下幾種類型:

方式二:傳遞賦值結果

  1. 使用賦值節點

    賦值節點(即上遊節點)支援 MaxCompute SQLPython 2Shell三種語言,會自動將最後一條查詢或輸出結果賦值給節點的輸出參數(outputs),下遊節點可以通過引用該參數來擷取賦值節點的輸出結果。詳情參見:賦值節點

  2. 使用賦值參數

    在支援賦值參數的節點中執行以下操作:

    image

    1. 節點輸出參數地區,單擊添加賦值參數

    2. 系統會自動添加名為 outputs 的輸出參數。該參數無需配置,其值是本節點代碼的最後一行查詢結果。

    3. 單擊儲存

      說明

      添加賦值參數後,賦值參數會將本節點查詢結果傳遞到引用該賦值參數的下遊節點。如果產生結果為空白,不會阻塞本節點運行,但下遊引用的節點可能會失敗。

    具體使用方式可類比賦值節點中的MaxCompute語言使用方式。

重要

輸出參數支援刪除操作。刪除輸出參數時,請確保下遊節點不再使用該參數,否則將影響下遊任務運行。

步驟二:配置下遊節點以使用參數

  1. 配置輸入參數

    1. 開啟下遊節點的編輯頁面,進入調度配置 > 節點上下文參數 配置頁面。在節點輸入參數地區,單擊添加參數

    2. 配置輸入參數,從上遊節點的輸出參數中選擇一個作為本參數的取值來源,並為本節點定義一個參數名

    3. 單擊工作欄的儲存完成參數添加。

  2. 建立依賴關係

    綁定上遊節點的輸出參數後,系統會自動添加對該節點的同周期依賴,無需手動設定。

  3. 引用參數

    在下遊節點的代碼中,通過 ${輸入參數名} 的格式引用參數。

    以下為 Shell 節點引用輸入參數 param 的樣本:

    echo "The value from upnode is ${param}"

    若上遊節點使用賦值結果傳遞給下遊,參數值通常為二維數組或通過逗號分隔的一維數組,可參考以下方式擷取數組內的值:

    • 若上遊為SQL節點(二維數組):

      • 行:${param[i]}

      • 儲存格: ${param[i][j]}

    • 若上遊為Python/Shell (一維數組):
      行:${param[i]}

    索引均從0開始。

步驟三:調試運行

上下文參數僅在工作流程觸發的周期執行個體中按調度順序傳遞。單獨運行下遊節點無法擷取上遊參數,會導致任務失敗。調試時,應從上遊節點開始,按商務程序順序執行。

  1. 返回工作流程,單擊工作流程上方工具列的運行,或按右鍵下遊節點,選擇運行到該節點

  2. 在產生的DAG執行個體圖中,單擊節點查看作業記錄,並檢查結果是否符合預期。

系統上下文變數

系統變數

說明

${projectId}

專案ID。

${projectName}

MaxCompute專案名。

${nodeId}

節點ID。

${gmtdate}

執行個體定時時間所在天的00:00:00,格式為yyyy-MM-dd 00:00:00

${taskId}

任務執行個體ID。

${seq}

任務執行個體序號,代表該執行個體在當天同節點執行個體中的序號。

${cyctime}

執行個體定時時間。

${status}

執行個體的狀態:成功(SUCCESS)、失敗(FAILURE)。

${bizdate}

業務日期。

${finishTime}

執行個體結束時間。

${taskType}

執行個體運行類型:正常(NORMAL)、手動(MANUAL)、暫停(PAUSE)、空跑(SKIP)、未選擇(UNCHOOSE)、周月空跑(SKIP_CYCLE)。

${nodeName}

節點名稱。