當標準的上下遊依賴無法滿足您複雜的業務情境時——例如,天任務需等待前一天所有小時任務完成,或需要組合多個任務的“且/或”條件——您就需要一個更靈活的工具。本文介紹如何使用依賴檢查節點來構建跨周期、跨工作流程、跨工作空間的複雜依賴檢查,讓您精準控制任務的觸發時機,確保資料處理的準確性和時效性。
功能概述
依賴檢查節點是一個強大的、靈活的依賴關係檢查工具。當需要處理複雜的、跨周期的依賴情境時,例如天任務需要等待前一天所有小時任務都成功後才能運行,或者需要同時滿足多個來自不同工作空間的任務條件時,依賴檢查節點是您的最佳選擇。
核心能力:
-
跨實體依賴:支援跨工作空間、跨工作流程設定依賴。
-
跨周期依賴:精確指定跨周期依賴時,所依賴的上遊執行個體的時間範圍。
-
複雜邏輯組合:支援通過且(AND)與或(OR)關係組合多個依賴檢查條件。
-
自訂檢查策略:可靈活設定檢查頻率和最大等待時間,逾時則任務失敗。
適用範圍
版本限制:僅支援DataWorks企業版。
配置介面概覽
依賴檢查節點的配置主要分為兩部分:依賴檢查和檢查設定。
依賴檢查地區可添加多個檢查項,每個檢查項需選擇依賴的上遊任務並設定時間周期(單位支援天),多個檢查項之間通過且/或邏輯運算子組合。檢查設定地區包含檢查間隔(預設1分鐘/次)和最大檢查時間長度(預設60分鐘)兩個參數。
配置依賴檢查節點
依賴檢查節點的配置核心是構建一個依賴檢查邏輯。您可以定義多個檢查項和檢查組,並通過且/或關係進行自由組合。每個檢查項都指向一個或多個上遊節點在特定時間範圍內的執行個體。當依賴檢查節點運行時,它會評估整個邏輯運算式,最終返回一個布爾值(True/False),以此決定下遊節點是執行還是阻塞。
配置依賴檢查項
支援在一個依賴檢查節點中設定多個檢查組,每個組內可以包含多個檢查項,從而構建複雜的依賴網路。
-
添加檢查組和檢查項:
-
點擊+ 添加項來建立一個新的依賴檢查條件。
-
多個檢查項可以被組織在一個檢查組內。
-
-
配置檢查項內容:
-
任務:輸入您要依賴的任務輸出名稱、名稱或ID進行搜尋和選擇。
-
支援選擇本工作空間同工作流程、跨工作流程或其他有許可權的工作空間下的任務。
重要若僅實現簡單跨空間或跨工作流程依賴調度,可參考如何配置跨商務程序、跨工作空間的調度依賴。
-
如果選擇一個尚未發布的任務,系統會提示您所選的任務未發布至生產環境,運行時可能會檢查失敗。
-
-
時間周期:時間周期決定節點運行時要檢查上遊任務的哪個歷史執行個體。根據需要選擇不同的時間周期類型,以下是詳細說明。
說明檢查項內為且的關係,即若選擇當天的所有小時任務,需要全部運行成功才返回True。
時間周期類型
可選項
說明
分鐘
前 X 分鐘(X取值範圍: 0-59)檢查相對於目前時間的
X分鐘前的執行個體。當前分鐘對應前 0 分鐘。小時
前 X 小時(X取值範圍: 0-23)檢查相對於目前時間的
X小時前的執行個體。當前小時對應前 0 小時。天
前 X 天(X取值範圍: 0-7)檢查
X天前的執行個體。當天對應前 0 天。周
本周一到周日、上周一到周日、上周一、上周二...上周日。檢查指定周範圍內的執行個體。
月
本月第一天到最後一天本月第一天上個月最後一天等。檢查指定月份範圍內的執行個體。
-
-
設定邏輯關係(且/或):
-
在介面左側,您可以設定檢查組之間以及組內檢查項之間的邏輯關係。
-
且(AND):表示所有關聯的檢查項/檢查組都必須成功。
-
或(OR):表示只要有一個關聯的檢查項/檢查組成功即可。
-
-
配置檢查設定
在頁面的最下方,您可以定義節點的檢查行為:
-
檢查間隔:設定每隔多久檢查一次所有依賴項的狀態。最小值為
1 分鐘/次。 -
最大檢查時間長度:設定節點最長的等待時間。如果超過此時間長度,所有依賴項仍未滿足條件,則依賴檢查節點自身將運行失敗。最大值為
1440 分鐘(24小時)。
運行邏輯與狀態
-
檢查中:在最大檢查時間長度內,只要有任何一個依賴條件未滿足,節點任務就處於運行中狀態,並會根據“檢查間隔”周期性地重試。
-
運行成功:在最大檢查時間長度內,所有依賴條件根據您設定的“且/或”邏輯被滿足,節點狀態變為運行成功。
-
運行失敗:
-
超過最大檢查時間長度後,依賴條件仍未被滿足。
-
在檢查過程中,如果發現某個必須成功的依賴項(例如在“且”關係中)所指向的任務不存在,節點會提前終止共置為運行失敗。
-
實戰案例:讓“天任務”等待“前一日所有小時任務”
回到開頭那個最經典的問題。假設有一個每日匯總報表的天任務(rpt_daily_summary),它必須等到一個名為 ods_hourly_log 的小時任務在前一天(00:00 到 23:59)的所有24個執行個體都成功運行後,才能啟動。
-
拖入依賴檢查節點
在你的天任務rpt_daily_summary上遊,拖入一個依賴檢查節點,並串連它們。 -
配置依賴檢查項
雙擊開啟依賴檢查節點,配置節點的依賴檢查項。-
添加依賴任務:點擊 + 添加項,在任務輸入框裡,搜尋並選擇依賴的那個小時任務
ods_hourly_log。 -
定義時間範圍:需要檢查的是 “前一天” 的所有小時執行個體,故時間周期選擇
天,然後選擇前1天。系統將檢查前一個自然日內這個小時任務產生的所有執行個體(24個)是否全部成功。
-
設定邏輯關係:僅此一個檢查項,檢查組內部以及組之間的邏輯關係都保持預設的
且(AND)即可。
-
-
配置檢查策略
-
檢查間隔:比如設定為5分鐘/次,表示如果依賴還沒滿足,系統將等待5分鐘,然後再去檢查一次。
-
最大檢查時間長度:比如設定為180分鐘,表示從天任務的定時時間開始,最多等待3個小時。如果3小時後,前一天的小時任務還沒全部運行完畢,這個依賴檢查節點就直接報錯失敗,下遊的天任務也不會啟動。這能防止無限期等待,及時暴露問題。
-
配置完成,儲存並發布。這樣,每天你的日報任務就會等到所有小時資料準備就緒後再運行。
附錄:與調度依賴區別
|
特性 |
依賴檢查節點中的被檢查節點 |
調度依賴節點 |
|
觸發方式 |
依賴檢查節點主動輪詢檢查項的狀態,檢查項的節點不會觸發或修改依賴檢查節點的狀態。 |
目標節點到已耗用時間後,查看調度依賴節點的狀態是否滿足要求。 |
|
DAG 可視化 |
依賴關係內聚在節點配置中,不體現在DAG圖上。 |
在DAG圖中展示為上下遊依賴連線。 |
|
補資料/重跑聯動 |
單獨重跑/補資料檢查項的節點,不會自動觸發目標節點。 |
對調度依賴節點進行補資料,可選擇性觸發目標節點。 |