调度周期定义节点在生产环境下自动执行的频率。DataWorks 调度系统根据配置的调度周期自动生成周期实例,并依据节点间依赖关系和实例的定时时间触发执行。
核心概念
-
周期实例:调度系统根据周期任务的调度配置(例如每天 0 点执行),为每个业务日期生成一个运行实体,即周期实例。任务的运行、状态和日志均与该实例关联。
-
跨周期依赖:DataWorks 支持不同调度周期的节点互相依赖。例如,一个每日调度的下游节点可以依赖一个每小时调度的上游节点。节点间依赖关系的本质是其生成的周期实例之间的依赖。详情参见不同周期依赖关系说明。
-
空跑:对于非每日调度的任务(如周、月、年调度),在非指定的运行日期,调度系统会生成一个"空跑"实例。该实例到达定时时间后会立刻变为"成功"状态,但不会执行节点内的代码逻辑。空跑主要用于打通依赖,确保下游的日调度节点能够正常触发。
-
实例运行状态为成功,执行时长为 0 秒,无执行日志。
-
不占用调度或计算资源。
-
不阻塞下游节点的执行。即使上游节点空跑,下游节点在满足其运行条件后也会正常执行。
-
基本原则与场景
调度执行条件
一个周期实例的执行必须同时满足以下两个条件,无先后顺序:
-
其依赖的所有上游实例均已成功执行(包括空跑成功的实例)。
-
已到达实例自身的定时时间。
因此,配置的调度时间仅为预期定时时间,节点的实际执行时间受上游完成时间、节点运行资源、节点实际执行条件情况等因素影响。
工作流调度场景
在一个由节点 A、B、C 组成的工作流(A→B→C)中,调度时间的配置会影响整个流程的执行:
|
场景一:统一启动时间 |
|
|
|
整个业务流程要求凌晨 3 点后开始,只需将起始节点 A 的定时时间设为 |
|
场景二:各节点启动时间不同 |
|
|
|
A 节点定时 3 点执行,B 节点要求 5 点后才能执行,C 节点要求 6 点后才能执行。需要为 A、B、C 分别设置定时时间为 |
|
场景三:部分节点有特定启动时间 |
|
|
|
A 节点定时 3 点执行,B 节点要求 5 点后才能执行,C 节点无特定时间要求。需要将 A 的定时时间设为 |
更新调度时间的影响
在调度配置中修改节点的调度时间并重新发布后,其影响取决于选择的实例生成方式:
-
T+1次日生成:选择此项并发布后,近两天(T和T-1)已生成的实例(包括已完成和未运行的)的定时时间将更新为新配置的时间。未生成的未来实例将按新时间生成。
-
即时生成实例:选择此项会根据新配置立即生成新的实例,历史实例的定时时间不会改变。
调度类型配置
DataWorks 支持分钟、小时、日、周、月、年六种调度周期。在数据开发(DataStudio)的节点编辑页面,单击右侧的调度配置,在调度时间区域设置。
调度时间的配置方式取决于节点的组织形式:
-
工作流节点:如果节点是以工作流方式组织的,调度时间统一在工作流上配置,工作流内的各个节点不能单独配置调度时间。如需修改,请前往工作流的调度配置中设置。
-
独立节点:如果节点未归属任何工作流,调度时间由节点自身独立配置。
分钟调度
分钟调度的最小时间间隔为 1 分钟。
配置示例
目标:节点在每天 00:00 至 23:59 时间段内,每隔 30 分钟调度一次。
cron 表达式根据选择的时间自动生成,不可手动修改。

调度详情
以上配置每天会生成 48 个周期实例,其定时时间分别为 00:00, 00:30, 01:00, ... , 23:30。每个实例的业务日期(bizdate)均为当天。
分钟调度更多依赖场景可参见:分钟任务依赖其他任务。
小时调度
注意事项
-
时间周期遵循左闭右闭原则。例如,配置在
00:00~03:00时间段内每隔 1 小时运行一次,调度系统将生成 4 个实例,定时时间分别为00:00、01:00、02:00和03:00。 -
可设置时间段和间隔,也可直接指定多个运行时间点。
配置示例
目标:节点在每天 00:00 至 23:59 时间段内,每隔 6 小时自动调度一次。
cron 表达式根据选择的时间自动生成,不可手动修改。

调度详情
调度系统每天将生成 4 个实例,定时时间分别为 00:00、06:00、12:00 和 18:00。
小时调度更多依赖场景可参见:小时任务依赖其他任务。
日调度
日调度节点每天在指定的定时时间运行一次。新建周期任务时,默认调度时间在 00:00~00:30 时间段内随机生成,可根据需要修改。
配置示例
目标:节点每天 13:00 运行一次。
cron 表达式根据选择的时间自动生成,不可手动修改。

调度详情
调度系统每天会为该任务生成一个实例,定时时间为当天 13:00。
日调度更多依赖场景可参见:天任务依赖其他任务。
周调度
在非指定的调度日期,周调度节点会触发空跑,以确保下游依赖能够正常执行。详情参见空跑。
配置示例
目标:任务在每周一和周五的指定时间运行。在周一、周五生成的实例会正常调度执行,其他日期的实例会空跑。
cron 表达式根据选择的时间自动生成,不可手动修改。

调度详情
调度系统会自动为任务生成实例并运行。
使用补数据功能时,注意选择的业务日期。DataWorks 中业务日期 = 定时调度日期 - 1。例如,要补一个周一运行的周调度任务,其业务日期应选择为上周日。若选择其他日期,补数据实例将空跑。
月调度
在非指定的调度日期,月调度节点会触发空跑,以确保下游依赖能够正常执行。详情参见空跑。
月调度支持将指定时间配置为每月最后一天。
配置示例
目标:任务在每月最后一天的指定时间运行。每月最后一天生成的实例会正常调度执行,其他日期的实例会空跑。
cron 表达式根据选择的时间自动生成,不可手动修改。

调度详情
调度系统会自动为任务生成实例并运行。
使用补数据功能时,注意选择的业务日期。DataWorks 中业务日期 = 定时调度日期 - 1。例如,要补一个 1 月 31 日运行的月末任务,其业务日期应选择为 1 月 30 日。若选择其他日期,补数据实例将空跑。
年调度
在非指定的调度日期,年调度节点会触发空跑,以确保下游依赖能够正常执行。详情参见空跑。
配置示例
目标:任务在每年的一月、四月、七月、十月的 1 日和最后一日运行。在指定日期生成的实例会正常调度执行,其他日期的实例会空跑。

调度详情
调度系统会自动为任务生成实例并运行。
更多依赖场景可参见:复杂依赖场景调度配置原则与示例。