DataWorks 中的調度依賴用於定義周期調度節點(即在調度系統中按周期自動啟動並執行任務節點)之間的上下遊關係。配置調度依賴後,系統會確保所有上遊節點的執行個體均運行成功後,下遊節點的執行個體才會被觸發執行,從而保障資料按正確的順序產出和消費。本文介紹調度依賴的基本概念、依賴類型和配置方式,協助您在配置前建立整體認知,並快速找到適合您情境的操作文檔。
功能介紹
調度依賴是 DataWorks 中用於定義節點間上下遊關係的機制。通過配置調度依賴,您可以指定一個節點在哪些上遊節點運行成功後才開始執行,從而保證資料處理的正確順序。配置依賴後,DataWorks 調度系統將自動編排執行順序:僅當所有上遊執行個體運行成功,且時間、資源等條件均滿足時,下遊執行個體才會被觸發。
DataWorks 通過節點輸出名稱和節點輸入名稱匹配來建立節點間的依賴關係。配置依賴的核心操作流程如下:
上遊節點配置輸出:為上遊節點添加輸出名稱,通常以
專案名.表名的形式命名(例如my_project.dim_user),代表該節點產出的資料表。下遊節點配置輸入:在下遊節點中搜尋並選擇上遊節點的輸出名稱作為本節點的輸入(即依賴),完成依賴關係的建立。
自動解析(可選):對於 SQL 類節點,DataWorks 可以自動解析代碼中的
INSERT和SELECT語句,識別輸入表和輸出表,自動產生依賴配置。您也可以在自動解析的基礎上手動調整。支援解析的節點類型參見:各類型節點自動解析情境。
每個節點必須至少有一個輸出名稱。系統會為節點自動產生一個預設輸出(格式為 專案名.節點ID_out),即使刪除所有自訂輸出,該預設輸出也會保留。
規則約束
發布生效原則:調度依賴配置僅在節點提交到營運中心後生效。開發節點時的配置不會自動同步至調度環境。
上下遊調度狀態:依賴關係生效的前提是上遊與下遊節點執行個體均已產生,且為正常調度狀態。若節點配置異常或者上遊執行個體異常,可能導致節點孤立,無法正常調度。
環路依賴限制:系統禁止存在循環相依性(A 依賴 B,B 依賴 A)的節點,包括直接和間接迴圈。提交時若檢測到環路,系統將阻斷髮布並報錯。
依賴類型
DataWorks 支援兩種調度依賴類型:同周期依賴和跨周期依賴,分別適用於不同的業務情境。
先導概念
周期是一個相對概念,其含義由節點的調度時間定義。一個“調度周期”是指節點兩次相鄰調度執行個體間的時間位移量,由其調度頻率決定。比如對於天調度任務,其上一周期為前一天的執行個體;對於小時調度任務,則為上一小時的執行個體。
調度頻率 | 一個周期 |
天、周、月、年調度 | 1 天 說明 對於周、月、年調度任務,執行個體仍按天維度產生(非調度日為空白跑執行個體)。因此,依賴計算基於天粒度,上一周期執行個體可能為空白跑狀態。 |
小時調度 | 小時層級的間隔 |
分鐘調度 | 分鐘層級的間隔(如每5分鐘) |
兩種依賴類型
舉例:一個天調度節點 A 產出表 dim_user,下遊節點 B 消費該表:
同周期依賴:B 的今天的執行個體等待A 今天的執行個體運行成功後再運行。即 B 消費的是 A 當天產出的資料。
跨周期依賴:B 的今天的執行個體等待A 昨天的執行個體運行成功後再運行。即 B 消費的是 A 前一天產出的資料。
對比項 | 同周期依賴 | 跨周期依賴(依賴上一周期) |
含義 | 本節點當前周期的執行個體運行,依賴上遊節點當前周期執行個體的運行結果。 | 本節點當前周期的執行個體運行,依賴指定節點上一周期執行個體的運行結果。指定節點可以是本節點自身(自依賴)、下遊一級子節點或任意其他節點。 |
DAG 圖中的表現 | 以實線展示。 | 以虛線展示。 |
典型情境 | 節點 B 需要讀取節點 A 今天產出的資料。 | 節點依賴昨天產出的資料(如 T-1 取數);小時/分鐘任務通過自依賴實現串列執行,避免多個周期並發。 |
配置方式 | 支援自動解析、商務程序拉線、手動添加。 | 在調度配置面板的"上一周期"地區,選擇依賴形式並指定節點ID。 |
說明:同一對節點之間,同周期依賴和跨周期依賴可以同時存在,但需要明確各自的業務含義。如果您僅需要跨周期依賴,請記得刪除系統自動解析產生的同周期依賴,否則下遊執行個體仍需等待上遊當前周期執行個體完成後才能運行,導致不符合預期的延遲。
調度依賴配置指引
為確保調度鏈路的完整性與可維護性,所有節點均需配置上遊依賴後方可發布至營運中心進行自動調度(若無資料依賴,需依賴虛擬節點或根節點)。配置調度依賴時,需梳理節點的商務邏輯,明確依賴對象和依賴類型,選擇最合適的配置方式,構建出既穩健可靠又結構清晰的資料工作流程。
1. 明確依賴對象
在配置依賴之前,需完成以下準備工作:
梳理血緣關係:確認上遊產出的表/分區與下遊讀取的表/分區是否匹配。
檢查調度屬性:確保節點的調度周期、生效時間、調度參數等已正確設定,因為調度屬性直接影響依賴的掛載行為。
根據當前節點對資料的依賴形式,選擇依賴對象。
情境一:依賴於上遊節點的直接產出 |
|
情境二:依賴非調度上遊資料(資料就緒驅動) |
|
情境三:無直接資料依賴,但有商務邏輯關聯 |
|
2. 選擇依賴類型
若當前節點依賴上遊節點的直接產出(即情境一),需要進一步確認,依賴的資料為上遊同周期的產出,還是跨周期的產出。
核心判斷
看下遊實際讀取的是上遊哪個周期產出的資料。節點周期寫入某張表某個分區的資料,大部分情境都是採用調度參數來動態實現,您可參考調度參數支援的格式,瞭解調度參數的替換原理。若您需要依賴同工作空間某節點,則可檢查其調度參數的配置情況。
確認方式
同空間節點:查看上遊節點代碼中的調度參數。參數替換後寫入的是“今天”的分區還是“昨天”的分區。
開發環境看上遊節點的調度參數配置和節點代碼詳情,生產環境看執行個體詳情中的參數替換結果。
跨空間節點:通過資料地圖查看上遊表的分區資訊和變更記錄。
確認每天實際寫入的分區值。
選擇類型
下遊代碼取的是上遊當天/當前周期的分區:同周期。
下遊代碼取的是上遊前一天/上一周期的分區:跨周期。
小時/分鐘任務需要串列不並發 :跨周期,即依賴本節點。
未正確確認血緣的後果:
依賴缺失風險:若存在表血緣但未配置調度依賴,下遊任務將在上遊執行個體成功前啟動,導致讀取不到資料或資料不完整。
參數匹配風險:若依賴配置但分區參數錯位(如上遊產出今日分區,下遊讀取昨日分區),將導致資料邏輯錯誤與品質異常。
3. 配置依賴關係
根據步驟1、2確認的依賴對象和依賴形式,選擇合適的配置方法進行依賴配置。
DataWorks支援不同調度頻率的任務互相依賴掛載,結合約周期/跨周期依賴和調度參數,可實現豐富的調度情境。詳見:
4.調度依賴關係確認
配置完成後、發布之前,必須進行驗證:
確認方式 | 說明 |
用於提前預覽節點當前配置的調度依賴是否符合預期。
| |
用於提交節點時,確認目前的版本節點依賴變更是否符合預期,及變更對生產的影響。 開啟自動解析時,為保障生產資料正常產出,您需要在提交節點時,對節點調度變更的相關操作進行二次確認。可使用該功能保障依賴變更不影響生產任務資料產出。 | |
用於節點發布後,在營運中心確認生產調度任務的依賴是否符合預期。
|
移除依賴影響
在任務營運或迭代過程中,可能需要移除或調整已有的調度依賴。
移除依賴前,請務必評估對下遊任務調度行為的影響,避免造成任務孤立或資料事故。
下遊依賴情境 | 移除依賴後的影響 | 風險等級 |
下遊僅依賴當前節點 | 下遊任務變為孤立節點,失去上遊觸發機制,不再自動調度運行。 | 高 |
下遊依賴多個父節點 | 下遊任務可能在上遊資料未就緒時啟動,導致資料缺失或計算錯誤。 | 中 |
下遊依賴跨周期執行個體 | 若移除跨周期依賴,下遊可能讀取到錯誤業務日期的資料,導致資料邏輯混亂。 | 中 |
應用情境
離線數倉分層建設:ODS → DWD → DWS → ADS 全鏈路依賴配置,確保分層資料按序產出。
標準 ETL 鏈路:配置同周期依賴,確保下遊任務嚴格等待上遊執行個體成功後執行,保障資料加工鏈路的順序性與一致性。
隔日(T+1)報表:配置跨周期依賴(位移量 -1),使今日任務依賴昨日完整業務資料,實現隔日資料準確分析與產出。
多周期混合彙總:配置跨周期依賴,使天粒度任務依賴小時粒度任務的全周期執行個體,確保匯總前底層資料完整就緒。
外部資料就緒觸發:配置自訂依賴或檢查節點,確認外部檔案送達或介面就緒後觸發流程,實現跨系統調度協同。
複雜工作流程控制:利用虛節點彙總多分支依賴,作為流程式控制制裡程碑,簡化鏈路結構並提升監控可視性。
常見問題
以下為典型情境說明,更多調度依賴的常見問題,請參見依賴關係常見問題。
節點唯一性相關。
開發環境與生產環境節點形態不同但節點唯一:同一節點在開發環境和生產環境中的調度依賴配置可以不同,即同一個節點在開發環境和生產環境可以擁有兩種不同的形態,但節點唯一。
下線節點前需在開發環境與生產環境同時移除下遊依賴:由於節點唯一性,為保障下遊任務取數及運行無誤,DataWorks在下線上遊任務前,需先在下遊節點調度移除,然後重新設定下遊節點需要依賴的上遊節點,並提交發布。確保開發環境及生產環境該依賴都被移除後,才可下線上遊任務。
與執行個體產生方式相關。
建立節點時,請確保上下遊節點的執行個體產生方式相同,避免因為執行個體產生方式不同,上遊節點當天產生執行個體,下遊節點隔天產生執行個體,導致下遊執行個體變為情境:節點孤立。
變更已存在節點的調度周期,並且選擇發布後及時產生執行個體時,修改節點的調度依賴時,已產生的執行個體不會自動刪除,節點發布後當天周期執行個體的依賴情況會存在錯亂,詳情請參見即時轉執行個體對當天周期執行個體依賴關係的影響。
使用OpenAPI更新作業時出現超出200個上遊依賴的報錯。
報錯詳情:'One file could not have more than 200 inputs 'One file could not have more than 200 inputs'。
可通過在上下遊之間通過資料開發加上虛擬節點,減少當前節點的直接上遊依賴,虛擬節點配置詳情請參見:虛擬節點