全部產品
Search
文件中心

DataWorks:時間屬性進階配置

更新時間:Jan 23, 2026

本指南旨在詳細解析 DataWorks 任務在生產環境下的時間屬性配置規範,涵蓋從基礎的定時設定到複雜業務情境下的高階邏輯。時間屬性不僅決定了資料產出的時效性,更直接影響生產鏈路的穩定性確定性。通過對執行個體生命週期、調度時間、執行策略及異常容錯四個維度深度配置,使用者可以構建出既靈活又穩健的自動化調度體系,實現商務邏輯與計算流轉的解耦。

時間配置的基本原則

DataWorks調度系統基於依賴驅動時間約束兩種邏輯。節點的運行時刻取決於這兩個條件的交集。理解這兩種模式是配置調度的基礎。

說明

調度依賴配置參見調度依賴配置指引

模式一:依賴驅動執行

當營運目標是儘快完成整個商務程序的計算時,採用此模式。整個流程的所有任務,只要上遊資料就緒就應立即執行,以最快速度完成全鏈路計算。

  • 配置方法:僅為商務程序的第一個(或多個無上遊依賴的)節點設定一個明確的定時時間(如 02:00),所有下遊節點的定時時間統一設定為 00:00

  • 運行邏輯:下遊節點因其上遊依賴未滿足而處於等待狀態。一旦上遊節點運行成功,下遊節點立即被觸發執行。

  • 配置與運行樣本:

    image

    節點

    定時時間配置

    實際已耗用時間(預估)

    觸發邏輯

    A (首節點)

    02:00

    02:00

    到達指定時間,觸發執行。

    B (下遊)

    00:00

    ~02:10 (A完成後)

    依賴的節點A運行成功,立即觸發節點B。

    C (下遊)

    00:00

    ~02:18 (B完成後)

    依賴的節點B運行成功,立即觸發節點C。

模式二:時間約束執行

當流程中某個節點因外部依賴或商務規則,必須在特定時間點之後才能運行時,可採用此模式。例如:流程中的某個節點(如節點B),因外部商務規則或系統視窗期限制,必須在淩晨5點後方可開始計算。

  • 配置方法:為有時間約束的節點設定一個明確的定時時間(如 05:00)。

  • 運行邏輯:節點的運行須同時滿足上遊依賴已完成自身定時時間已到達兩個條件。即使上遊節點A在 02:00 完成,節點B仍會等待至其設定的 05:00 才開始執行。

  • 配置與運行樣本:

    image

    節點

    調度配置

    執行個體已耗用時間

    觸發邏輯

    A (首節點)

    02:00

    02:00

    到達指定時間,觸發執行。

    B (時間約束)

    05:00

    05:00

    上遊依賴A已滿足,等待自身定時時間到達。

    C (時間約束)

    08:00

    08:00

    上遊依賴B已滿足,等待自身定時時間到達。

調度時間配置規劃

保障關鍵任務按時完成

當產出資料有嚴格的交付時間要求時(例如,節點E必須在每日 09:00 前完成),需要從終點反向規劃整個商務程序的定時時間。

方案一:手動設定時間

方案二:通過依賴驅動自智能調整(推薦)

  1. 確定最終產出節點的交付時間和緩衝時間

    • 目標:節點E必須在 09:00 前交付給下遊業務團隊。

    • 預估節點E運行時間長度為20分鐘,並增加10分鐘的緩衝時間以應對波動。

  2. 計算並設定最終產出節點的定時時間

    • 最晚啟動時間 = 交付時間 - (預估運行時間長度 + 緩衝時間)。

    • 節點E的定時時間 = 09:00 - (20分鐘 + 10分鐘)= 08:30

  3. 逐級計算各節點的定時時間

    從後向前,逐級計算並設定C、D、B、A等所有上遊節點的最晚啟動時間。

  1. 確定最終產出節點的SLA和緩衝時間

    • 目標:節點E必須在 09:00 前完成。

    • 預估節點E運行時間長度為20分鐘,並增加10分鐘的緩衝時間以應對波動。

  2. 計算並設定最終產出節點的定時時間

    • 最晚啟動時間 = SLA時間 - (預估運行時間長度 + 緩衝時間)。

    • 節點E的定時時間 = 09:00 - (20分鐘 + 10分鐘)= 08:30

  3. 計算開始節點定時時間

    從後向前,逐級計算並設定開始節點(下圖為節點A)的定時時間。其餘下遊節點可保持預設時間,由調度依賴逐級驅動。

方案二將靜態規劃的思路與動態調度的能力相結合,實現了更低維護成本和更高運行彈性的交付時間保障。它將人工配置成本降到最低,僅需關注起點和終點,中間過程交由系統智能管理,更為推薦。

imageimage
說明

圖中的預設時間為00:00僅為舉例,實際情況下,天調度任務的預設調度時間在00:0000:30時間段內隨機產生。

節點

定時時間(方案一)

定時時間(方案二)

實際已耗用時間

A

07:00

07:00

07:00:00

B

07:20

~00:00(保持預設,無需調整)

~07:20:00

C

07:45

~00:00(保持預設,無需調整)

~07:45:00

D

07:30

~00:00(保持預設,無需調整)

~07:30:00

E

08:30

~00:00(保持預設,無需調整)

~08:30:00

通過基準優先順序實現資源錯峰

依賴驅動方式配置方便,但容易造成大量任務在同一時間(如淩晨 00:00)啟動導致計算資源競爭和任務排隊。此時,可通過基準管理的優先順序配置,提高核心關鍵任務的優先運行權。

  • 識別任務優先順序:區分核心任務(如ODS層資料幫浦)和非核心任務(如某些內部報表)。

  • 為任務設定調度優先順序:通過設定基準,提高核心資源擷取優先權。

  • 最佳化對比圖解:

image

通過調度時間+基準的配合,可以實現調度資源的合理配置,實現基於優先順序的智能調度,減少為每個任務單獨設定調度時間的營運成本和人為誤差。

情境

描述

最佳化前:資源擠壓

所有任務(核心A/B、報表C/D)都堆疊在00:00,導致並發過高,資源競爭激烈,任務普遍排隊等待。

最佳化後:錯峰執行

核心任務A/B因高優先順序,及時搶佔資源保持00:00運行。
報表任務C/D等待A/B運行完成後在2:00開始運行,既保證任務的平穩運行,又不搶佔重要任務的資源。

複雜情境實踐

配置跨周期依賴

當一個任務的運行依賴其上遊任務在前一個周期的執行個體時(例如,T+1日的匯總任務,需等待T日所有小時任務完成),需要配置跨周期依賴

  • 情境:一個日調度的匯總任務B,需要在每日淩晨 02:00 運行。它的資料來源是小時調度的任務A,必須確保前一天(T日)從 00:00 到 23:00 的所有小時執行個體都成功後,才能運行。

  • 配置方法:在配置節點B的調度依賴時,將其對上遊節點A的依賴關係設定為跨周期依賴。詳情請參見配置依賴上一周期(跨周期依賴)

    PixPin_2026-01-22_14-27-13

  • 運行效果:配置完成後,業務日期為 2025-12-02 的節點B執行個體,將等待業務日期為 2025-12-01 的所有節點A執行個體全部成功運行後,才被觸發執行。

    image
說明

實現複雜的周期調度

對於有特殊周期規律(如季度、半年度)的任務,如季度關賬任務,可通過組合調度周期和調度參數實現。

  • 情境:財務關賬任務,需要在每季度的最後關賬日執行,並依賴過去一整季的資料。

    設定關賬日時,通常會預留一段緩衝期,以處理跨月補單、退款沖正、人工稽核等月末的特殊事項。
  • 配置方法

    1. 設定調度周期:在任務的時間屬性中,選擇“年”調度,並指定月份為 1, 4, 7, 10,日期選擇 每月最後一天。DataWorks會自動處理不同月份(30/31日)及閏年的情況。

    2. 使用調度參數:在代碼中通過調度參數或自訂函數,動態計算所需的資料日期範圍。例如,擷取當前業務日期的季度初和季度末日期。詳情請參見調度參數支援的格式

  • 運行邏輯: DataWorks 會自動識別 30 號還是 31 號(甚至是閏年 2 月 29 號)為“最後一天”。在此期間,非月末日的執行個體自動“空跑”,既保證了依賴邏輯的連貫性,又確保了財務計算的精準觸達。

    image

結合調度日曆實現按交易日調度

調度時間(Cron運算式)定義任務在調度周期內的執行時刻,而調度日曆則作為執行日期的過濾器。二者結合,可實現僅在特定業務日期(如交易日、促銷日)執行任務的精確控制。

  • 情境:某證券公司的交易清算任務,必須在每個交易日(非節假日)的 22:00 運行 。若遇到周末或法定節假日,任務需自動停止執行,避免產生無效執行個體或空跑浪費資源 。

  • 解決方案:調度日曆 + 調度時間

    • 建立自訂日曆:在 DataWorks 資源中心維護一份“交易日曆”,手動或自動同步該年份的所有交易日期 。詳情見配置調度日曆

    • 配置調度屬性:設定為每天 22:00 觸發,並且勾選自訂調度日曆為上述的交易日曆。

  • 執行邏輯

    • 交易日:系統檢測到當前日期屬於日曆範疇,任務在 22:00 準時啟動運行 。

    • 非交易日(如春節):系統自動跳過該任務的執行個體產生,或者產生的執行個體直接處於“空跑”狀態,不佔用實際計算資源 。

    image
說明

調度日曆可視為一個執行日期的過濾器。通過與小時或分鐘級調度組合使用,能實現日期與時間的雙重過濾。

例如,一個配置為每日 08:00 和 18:00 啟動並執行小時任務,若關聯一個僅包含周一和周五的調度日曆,則該任務最終僅會在每周一和周五的這兩個指定時刻運行。

實踐建議

1. 靜態調度規劃配置

目標:通過分層策略實現調度邏輯與商務邏輯解耦。

核心策略

  1. 線性商務程序

    僅配置首節點定時時間,例如:首節點定時07:00。下遊任務通過依賴關係自動觸發,實現最大化執行效率。

  2. 時間依賴型任務

    1. 為特定任務,獨立設定精確定時時間。需注意設定時間時,盡量避免上遊任務的定時時間晚於下遊任務,導致下遊任務未按時運行。

    2. 通過啟用調度日曆和生效日期控制任務生效周期,例如:控制任務在2026年1月1日至2026年12月31日期間,僅在工作日運行。

  3. 動態調度參數

    結合${yyyymmdd}等調度參數實現時間參數的動態替換。

2. 智能基準動態調控

目標:保障核心任務交付時間,降低人工幹預成本。

前置條件:已建立基準並完成任務優先順序分級。

核心機制:

  1. 承諾時間與優先順序定義

    明確核心任務的承諾完成時間(如 09:00),並將其掛載至高優先順序基準。系統會根據優先順序自動識別核心鏈路,保障高優先順序任務(如 ODS 層抽取)優先擷取計算資源 。

  2. 資源自動“削峰填穀”

    無需手動為每個非核心任務設定錯峰時間點。調度引擎會根據基準優先順序,在資源緊張時自動讓非核心報表任務排隊避讓,優先確保核心鏈路的資源供給 。

  3. 動態預測與即時預警

    基於歷史運行時間長度,系統在淩晨即可動態預測當天鏈路是否會錯過交付時間。若淩晨 07:00 預測將延遲至 09:15,系統會立即觸發預警並高亮關鍵路徑上的瓶頸節點,變“事後補救”為“事前幹預” 。

最優實踐是將從終點反向推匯出的最晚啟動時間與智能基準相結合。此方法通過靜態規劃設定起點,再利用基準進行全鏈路動態優先順序調度,既減少了手動維護成本,又構建了從規划到預測的保障體系,確保核心資料產出的高度確定性。

相關文檔