DataWorks支持分钟、小时、日、周、月、年等类型的调度任务互相依赖,调度类型不同,任务执行的周期数不同。任务各周期是通过实例的方式执行,当上下游调度依赖的类型不同时,您可通过该文档了解上下游各周期实例如何挂载依赖,即上下游任务不同周期实例的依赖情况。
背景信息
DataWorks中,调度任务会根据调度类型及周期数生成相应的周期实例(例如,小时调度任务每天会根据周期数产生相应数量的小时实例),通过实例的方式运行任务。周期任务设置的依赖关系,其本质是任务间所生成实例的依赖。上下游任务的调度类型不同,其生成的周期实例数及实例的依赖情况不同。
DataWorks支持多种调度依赖场景,不同场景的调度任务,可选择同周期依赖或依赖上一周期。同周期依赖及依赖上一周期,详情请参见周期依赖配置、调度依赖方式选择(跨周期依赖)。
对于天任务依赖小时/分钟任务的跨时区场景,除了通过自依赖+就近原则间接实现外,还可启用调度依赖高级配置,直接使用指定区间依赖配置所需的依赖范围(如 [-5, 19]),或者使用指定集合依赖精确配置依赖的固定时间的实例,无需为上游小时任务设置自依赖。详情请参见周期依赖配置。
配置调度依赖前,您需先了解以下内容。
序号 | 描述 | 相关文档 |
1 | DataWorks支持多种调度类型(即分钟、小时、天、周、月、年),当上下游调度类型不一致时,DataWorks根据任务定时运行时间的就近原则设置调度依赖。 说明
| |
2 | DataWorks上任务一旦设置依赖,即表示上下游任务间存在数据依赖。无论下游任务定时运行时间为几点,均需等上游任务执行完成后,下游任务才满足可执行条件。 | |
3 | 您可通过具体场景示例,进一步理解设置依赖的就近原则。 | 场景包括: |
挂载依赖:就近原则
DataWorks的周期任务运行时会生成多个周期实例,下游周期实例会依赖上游周期实例,通常若不指定需挂载至某个周期实例,下游周期实例挂载依赖时会遵循就近原则,即与下游周期实例运行时间最近,且未被其他周期实例依赖的上游周期实例。不同场景的依赖原则具体如下:
下游任务的定时运行时间若早于上游任务,即便到达下游任务的定时时间,该任务也不会被调度,需等待上游任务运行完成后才会被调度运行。
根据就近原则挂载依赖时,对于下游任务当天的第一个实例,如果上游没有比它更早的实例,则下游默认依赖上游当天的第一个实例。
场景 | 说明 | 示意图 |
小时、分钟任务相互依赖场景 |
| 小时、分钟任务相互依赖的细分场景概览如下图: 举例: 小时任务依赖小时任务。
|
天任务依赖小时或分钟任务 | 默认情况:天任务默认依赖小时、分钟任务当天所有周期实例,即待小时、分钟任务当天所有周期实例的数据加工完成后,天任务才会对其当天所有数据进行加工清洗。 其他情况:若天任务只需依赖距离自己运行时间最近的小时、分钟周期实例,您可为小时、分钟任务设置自依赖。设置后,该小时、分钟周期实例运行完成后,天任务便会启动执行。 |
各细分调度场景的依赖及运行情况详情介绍,请参见:附录一:复杂依赖场景汇总。
依赖关系对任务执行的影响
下游任务一旦挂载依赖,若上游任务非运行成功状态,即使到达下游任务的定时运行时间,该任务也不会执行。
例如,小时任务B依赖天任务A,小时任务未设置自依赖。
天任务A:定时运行时间设置为
07:00。小时任务B:定时运行时间设置为
00:00、08:00、16:00。
若天任务A未运行完成,即便到了下游小时任务B的定时运行时间00:00,该任务也不会运行。下游任务B的最早实际运行时间为07:00。
附录一:复杂依赖场景汇总
下游任务的定时运行时间若早于上游任务,即便到达下游任务的定时时间,该任务也不会被调度,需等待上游任务运行完成后才会调度运行,对于下游任务当天的第一个实例,如果上游没有比它更早的实例,则下游默认依赖上游当天的第一个实例。
小时任务依赖其他任务
天任务依赖其他任务
分钟任务依赖其他任务
其他任务依赖周、月、年任务
附录二:工作流调度说明
在DataWorks中支持将工作流作为一个整体,添加上下游节点,其调度说明详情请参见:周期工作流编排。
附录三:跨时区全球数据聚合场景(指定区间依赖)
当中国数仓统一处理全球多地区数据时,各地区上游小时任务按当地时间运行,下游天任务按中国时区统计每日数据。由于时区差异,下游天任务需通过指定区间依赖上游各地区小时任务在特定时间窗口内的全部实例。
场景示例(业务日期 2026-01-22)
地区 | 与中国时差 | 依赖类型 | 偏移配置 | 实际依赖实例 |
印度 | 晚 2.5 小时 | 指定区间 | [-3, 21] | 01-21 21:00 ~ 01-22 21:00(24个实例) |
沙特 | 晚 5 小时 | 指定区间 | [-5, 19] | 01-21 19:00 ~ 01-22 19:00(24个实例) |
补数据场景下的跨天依赖行为
补数据任务生成的实例,其跨天依赖行为与日常调度实例有所不同。
1. 指定区间与指定集合的跨天依赖
在执行补数据时,通过指定区间或指定集合配置的跨天依赖将不生效。
具体行为:当为多个业务日期生成补数据实例时,系统在解析依赖关系时,会自动忽略掉所有跨越业务日期边界的依赖。即,补数据实例只会挂载其业务日期当天的上游实例,而不会挂载配置中指向前一天或后一天的上游实例。
示例:一个天任务配置了对上游小时任务
[-4h, 0]的区间依赖(即依赖当天0点前的4个实例)。在日常调度中,5月11日的实例会依赖5月10日 20:00-23:00的实例。但在补5月11日的数据时,这一跨天依赖会被忽略,该实例将不会挂载任何上游。
2. 补数据的默认跨天依赖(串行机制)
默认情况下,执行不分组的批量补数据时,不同业务日期的实例之间存在隐式的串行依赖。
具体行为:业务日期为
D的所有补数据实例,会整体等待业务日期为D-1的所有补数据实例全部运行成功后,才开始执行。这意味着,若D-1日期中有任何一个实例运行失败,D日期的所有实例都不会被调度。例外情况:若补数据时选择了分组执行,则该串行机制不生效。每个执行组内的任务实例将独立运行,不受其他组实例状态的影响。