本指南旨在详细解析 DataWorks 任务在生产环境下的时间属性配置规范,涵盖从基础的定时设置到复杂业务场景下的高阶逻辑。时间属性不仅决定了数据产出的时效性,更直接影响生产链路的稳定性与确定性。通过对实例生命周期、调度时间、执行策略及异常容错四个维度的深度配置,用户可以构建出既灵活又稳健的自动化调度体系,实现业务逻辑与计算流转的解耦。
时间配置的基本原则
DataWorks调度系统基于依赖驱动和时间约束两种逻辑。节点的运行时刻取决于这两个条件的交集。理解这两种模式是配置调度的基础。
调度依赖配置参见调度依赖配置指引。
模式一:依赖驱动执行
当业务目标是尽快完成整个业务流程的计算时,采用此模式。整个流程的所有任务,只要上游数据就绪就应立即执行,以最快速度完成全链路计算。
配置方法:仅为业务流程的第一个(或多个无上游依赖的)节点设置一个明确的定时时间(如
02:00),所有下游节点的定时时间统一设置为00:00。运行逻辑:下游节点因其上游依赖未满足而处于等待状态。一旦上游节点运行成功,下游节点立即被触发执行。
配置与运行示例:
节点
定时时间配置
实际运行时间(预估)
触发逻辑
A (首节点)
02:0002: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才开始执行。配置与运行示例:
节点
调度配置
实例运行时间
触发逻辑
A (首节点)
02:0002:00到达指定时间,触发执行。
B (时间约束)
05:0005:00上游依赖A已满足,等待自身定时时间到达。
C (时间约束)
08:0008:00上游依赖B已满足,等待自身定时时间到达。
调度时间配置规划
保障关键任务按时完成
当产出数据有严格的交付时间要求时(例如,节点E必须在每日 09:00 前完成),需要从终点反向规划整个业务流程的定时时间。
方案一:手动设置时间 | 方案二:通过依赖驱动自智能调整(推荐) |
|
|
方案二将静态规划的思路与动态调度的能力相结合,实现了更低维护成本和更高运行弹性的交付时间保障。它将人工配置成本降到最低,仅需关注起点和终点,中间过程交由系统智能管理,更为推荐。 | |
图中的默认时间为00:00仅为举例,实际情况下,天调度任务的默认调度时间在00:00~00:30时间段内随机生成。
节点 | 定时时间(方案一) | 定时时间(方案二) | 实际运行时间 |
A |
|
|
|
B |
|
|
|
C |
|
|
|
D |
|
|
|
E |
|
|
|
通过基线优先级实现资源错峰
依赖驱动方式配置方便,但容易造成大量任务在同一时间(如凌晨 00:00)启动导致计算资源竞争和任务排队。此时,可通过基线管理的优先级配置,提高核心关键任务的优先运行权。
识别任务优先级:区分核心任务(如ODS层数据抽取)和非核心任务(如某些内部报表)。
为任务设置调度优先级:通过设置基线,提高核心资源获取优先权。
优化对比图解:
通过调度时间+基线的配合,可以实现调度资源的合理配置,实现基于优先级的智能调度,减少为每个任务单独设置调度时间的运维成本和人为误差。
场景 | 描述 |
优化前:资源挤压 | 所有任务(核心A/B、报表C/D)都堆叠在 |
优化后:错峰执行 | 核心任务A/B因高优先级,及时抢占资源保持 |
复杂场景实践
配置跨周期依赖
当一个任务的运行依赖其上游任务在前一个周期的实例时(例如,T+1日的汇总任务,需等待T日所有小时任务完成),需要配置跨周期依赖。
场景:一个日调度的汇总任务B,需要在每日凌晨
02:00运行。它的数据来源是小时调度的任务A,必须确保前一天(T日)从00:00到23:00的所有小时实例都成功后,才能运行。配置方法:在配置节点B的调度依赖时,将其对上游节点A的依赖关系设置为跨周期依赖。详情请参见配置依赖上一周期(跨周期依赖)。

运行效果:配置完成后,业务日期为
2025-12-02的节点B实例,将等待业务日期为2025-12-01的所有节点A实例全部成功运行后,才被触发执行。
此场景下,任务B若没有其他上游节点,可配置工作空间根节点作为其上游节点。
更多跨不同粒度及跨周期依赖场景参见必读:复杂依赖场景调度配置原则与示例。
实现复杂的周期调度
对于有特殊周期规律(如季度、半年度)的任务,如季度关账任务,可通过组合调度周期和调度参数实现。
场景:财务关账任务,需要在每季度的最后关账日执行,并依赖过去一整季的数据。
设定关账日时,通常会预留一段缓冲期,以处理跨月补单、退款冲正、人工稽核等月末的特殊事项。
配置方法:
设置调度周期:在任务的时间属性中,选择“年”调度,并指定月份为
1, 4, 7, 10,日期选择每月最后一天。DataWorks会自动处理不同月份(30/31日)及闰年的情况。使用调度参数:在代码中通过调度参数或自定义函数,动态计算所需的数据日期范围。例如,获取当前业务日期的季度初和季度末日期。详情请参见调度参数支持的格式。
运行逻辑: DataWorks 会自动识别 30 号还是 31 号(甚至是闰年 2 月 29 号)为“最后一天”。在此期间,非月末日的实例自动“空跑”,既保证了依赖逻辑的连贯性,又确保了财务计算的精准触达。
结合调度日历实现按交易日调度
调度时间(Cron表达式)定义任务在调度周期内的执行时刻,而调度日历则作为执行日期的过滤器。二者结合,可实现仅在特定业务日期(如交易日、促销日)执行任务的精确控制。
场景:某证券公司的交易清算任务,必须在每个交易日(非节假日)的 22:00 运行 。若遇到周末或法定节假日,任务需自动停止执行,避免产生无效实例或空跑浪费资源 。
解决方案:调度日历 + 调度时间
创建自定义日历:在 DataWorks 资源中心维护一份“交易日历”,手动或自动同步该年份的所有交易日期 。详情见配置调度日历。
配置调度属性:设置为每天
22:00触发,并且勾选自定义调度日历为上述的交易日历。
执行逻辑:
交易日:系统检测到当前日期属于日历范畴,任务在 22:00 准时启动运行 。
非交易日(如春节):系统自动跳过该任务的实例生成,或者生成的实例直接处于“空跑”状态,不占用实际计算资源 。
调度日历可视为一个执行日期的过滤器。通过与小时或分钟级调度组合使用,能实现日期与时间的双重过滤。
例如,一个配置为每日 08:00 和 18:00 运行的小时任务,若关联一个仅包含周一和周五的调度日历,则该任务最终仅会在每周一和周五的这两个指定时刻运行。
实践建议
1. 静态调度规划配置
目标:通过分层策略实现调度逻辑与业务逻辑解耦。
核心策略:
线性业务流程
仅配置首节点定时时间,例如:首节点定时
07:00。下游任务通过依赖关系自动触发,实现最大化执行效率。时间依赖型任务
为特定任务,独立设置精确定时时间。需注意设置时间时,尽量避免上游任务的定时时间晚于下游任务,导致下游任务未按时运行。
通过启用调度日历和生效日期控制任务生效周期,例如:控制任务在2026年1月1日至2026年12月31日期间,仅在工作日运行。
动态调度参数
结合
${yyyymmdd}等调度参数实现时间参数的动态替换。
2. 智能基线动态调控
目标:保障核心任务交付时间,降低人工干预成本。
前置条件:已创建基线并完成任务优先级分级。
核心机制:
承诺时间与优先级定义:
明确核心任务的承诺完成时间(如 09:00),并将其挂载至高优先级基线。系统会根据优先级自动识别核心链路,保障高优先级任务(如 ODS 层抽取)优先获取计算资源 。
资源自动“削峰填谷”:
无需手动为每个非核心任务设置错峰时间点。调度引擎会根据基线优先级,在资源紧张时自动让非核心报表任务排队避让,优先确保核心链路的资源供给 。
动态预测与实时预警:
基于历史运行时长,系统在凌晨即可动态预测当天链路是否会错过交付时间。若凌晨 07:00 预测将延迟至 09:15,系统会立即触发预警并高亮关键路径上的瓶颈节点,变“事后补救”为“事前干预” 。
最优实践是将从终点反向推导出的最晚启动时间与智能基线相结合。此方法通过静态规划设定起点,再利用基线进行全链路动态优先级调度,既减少了手动维护成本,又构建了从规划到预测的保障体系,确保核心数据产出的高度确定性。