调度依赖分为任务间依赖、任务自依赖、工作流自依赖和依赖下游四种模式。任务间依赖表示不同的任务之间建立的依赖关系;任务自依赖表示同一任务的不同实例间互相依赖;工作流自依赖表示当前任务依赖本工作流上个周期的所有任务;依赖下游表示在特殊场景下某任务需要依赖下游任务的其他实例。下文将针对这四种模式进行介绍和说明。
一、任务间依赖
任务间依赖除配置上下游关系外,还需要定义真实执行时实例间的依赖逻辑。而实例间的依赖逻辑由数据依赖诉求和数据时效性需求决定。常用的依赖关系就是同周期依赖,即上游和下游调度周期相同,且都是同周期实例相互依赖,例如当天实例依赖当天实例。一些特殊场景下,也存在跨周期依赖和依赖偏移的场景。跨周期依赖即上下游任务的调度周期不同,即上下游数据时效性要求不同,例如上游为天任务,下游为小时任务。依赖偏移即存在不同周期实例依赖的情况,例如今天的实例依赖上游昨天的实例。下文将详细介绍依赖的具体配置方式及三种依赖场景的配置方式和对应的实例实际依赖逻辑。
1.1 依赖配置方式
添加上游任务
功能入口:任务配置 > 调度设置 > 上游依赖任务
支持通过搜索任务名称、任务 ID、项目名称查找需要配置的上游依赖任务。

配置上游任务
将搜索到的任务添加为依赖任务时,在依赖任务列表中会显示对应任务的信息,包括任务名称、任务状态、调度周期、负责人、所属工作流、所属项目、时间维度、实例范围、执行策略以及删除操作。

具体参数说明如下:
任务名称:依赖任务的任务名称、任务编号、任务类型。
任务状态:依赖任务的调度运行状态。
调度周期:依赖任务的调度周期。
负责人:依赖任务的负责人。
所属工作流:依赖任务所属的数据工作流。
所属项目:依赖任务所属的项目。
配置方式:推荐策略:包含常用的依赖配置方式;自定义:用户按需自定义依赖配置。
时间维度/实例范围
若在配置方式中选择推荐策略:则选择依赖方式及范围,不同周期任务依赖可选值不同。详细配置项见下表:调度依赖说明。
若在配置方式中选择自定义:
区间模式:输入格式为:x,y 。表示依赖上游任务实例数据时间偏移的范围。例如区间(天)的情况下,输入了-10,-1 ,表示依赖上游任务前10天到前1天的闭区间实例。x<=y,且最大差值为1000。
列表模式:输入格式为:x,y,z 。表示依赖上游任务实例数据时间的具体偏移值。例如列表(天)的情况下,输入了-3,-2,-1 ,表示依赖上游任务前3、2、1天的实例。x<y<z ,且最多可以输入50个具体时间偏移值。
配置执行策略
依赖的上游任务实例不存在时处理策略,默认为等待上游;选择等待上游表示上游任务实例不存在时持续等待,选择正常执行可在上游任务实例不存在、上游任务失败、上游超时三种状态下正常执行。上游不存在表示上游实例时间不在生效时间范围内;上游失败表示上游执行状态为失败;上游超时(仅针对周期执行生效)表示上游超过配置阈值实例还未成功。


依赖预览
支持根据配置的依赖关系进行依赖结果预览,辅助用户判断配置的依赖关系是否符合预期。可选择开始调度时间,查看对应实例数据时间依赖实例列表(实例数据时间)。
功能入口:

配置开始调度时间,系统会计算出当前节点最近一次实例数据时间,并计算出当前节点这个实例数据时间依赖上游特定节点的实例对应的实例数据时间,辅助客户判断依赖配置的准确性。

依赖自动解析
提供依赖自动解析功能,帮助用户快捷配置依赖关系,具体使用方式如下。
支持任务类型:DLC SQL、Hive SQL、Spark SQL。
第一步:确保上游任务的产出登记均已配置,具体配置方式见下文。
第二步:在当前任务中单击自动解析。

第三步:选择需要依赖的任务。

1.2 同周期依赖
依赖同周期某节点,是指本节点本周期运行,依赖上游节点当前周期的数据产出情况(即任务执行情况),待上游当前周期实例执行成功后,本节点才会运行。通常,若当前任务需依赖上游任务同周期产出的表数据时,可为当前任务设置依赖该上游任务的同周期任务。
场景说明:用于在相同时间粒度下完成数据的分层处理。
详细场景说明
场景细分 | 依赖逻辑 | 依赖配置 |
天依赖天 | 下游节点为天任务,调度时间为每天0点。上游节点也为天任务,调度时间为每天0点。 ![]() | 时间维度/实例范围选择:按天/当天(默认配置),即表示当天实例依赖上游当天实例。 ![]() |
小时依赖小时 | 下游节点为小时任务,每天间隔1小时执行一次,即每天0点、1点、2点、...、23点执行。上游节点为同周期小时任务,每天间隔2小时执行一次,即每天0点、2点、4点、...、22点执行 ![]() | 时间维度/实例范围选择:按小时/最近实例,即依赖上游实例数据时间从当前往前最近的实例。 ![]() |
分钟依赖分钟 | 下游节点为分钟任务,每5分钟执行一次,即每小时0分、5分、10分...55分执行。上游节点为同周期分钟任务,每10分钟执行一次,即每小时0分、10分...50分执行。 ![]() | 时间维度/实例范围选择:按分钟/当前分钟,即依赖上游当前分钟对应实例。 ![]() |
周依赖周/月依赖月/年依赖年 | 周依赖周、月依赖月、年依赖年的逻辑是类似,分为两种模式: 模式一:上游同周期所有实例均完成下游才可执行。 模式二:仅依赖最近一次(历史)实例数据时间的实例。 下面以周依赖周为例说明: 下游节点为周任务,每周一、三、五、七执行。上游也为周任务,每周一、周三、周四执行。 模式一:下游等待上游本周所有实例执行完成才能执行。 ![]() | 时间维度/实例范围选择:按周/本周,即上游本周所有实例都执行完成,下游周实例才能执行。 ![]() |
| 模式二:下游仅依赖实例数据时间最近的(历史)上游周实例。 ![]() | 时间维度/实例范围选择:按天/最近一次数据时间的实例,即检测到最近一次数据时间对应的上游实例通过后,下游即可执行。 ![]() |
1.3 跨周期依赖
跨周期依赖是指上游和下游的调度周期不同,比如上游为天任务,下游为小时任务。
场景说明:当数据的产生频率与消费频率不一致时,通过跨周期依赖实现不同时间精度的平滑过渡。
详细场景说明
场景细分 | 依赖逻辑 | 依赖配置 |
天依赖周/月/年 | 天依赖周/月/年的逻辑类似,分为两种模式: 模式一:上游周期所有实例均完成下游才可执行。 模式二:仅依赖最近一次(历史)实例数据时间的实例。 下面以天依赖月为例说明: 下游节点为天任务,每天0点执行。上游月任务,每月1号、15号、最后一天执行。 模式一:下游等待上游本月所有实例执行完成才能支持。 ![]() | 时间维度/实例范围选择:按月/本月,即上游本月所有实例运行完成,才会执行下游天任务 ![]() |
| 模式二:下游天任务依赖最近一次实例完成,则可执行。 ![]() | 时间维度/实例范围选择:按天/最近一次数据时间的实例,即检测到最近一次数据时间对应的上游实例通过后,下游即可执行。 ![]() |
天依赖小时/分钟 | 天依赖小时/分钟的逻辑类似,分为两种模式: 模式一:依赖当天所有实例 模式二:依赖前一天所有实例(分为包含当天实例0点实例和不包含当天0点实例)。 下面以天依赖小时为例说明: 下游节点为天任务,每天0点执行。上游小时任务,每2小时执行一次。 模式一:当天所有小时实例完成,天任务才可执行。 ![]() | 时间维度/实例范围选择:按天/当天,即上游当天所有小时实例都完成,才执行下游天任务。 ![]() |
| 模式二:下游天任务依赖上游前一天所有小时实例。 ![]() | 时间维度/实例范围选择:按天/前一天[-24,0):表示依赖前一天所有小时实例,不包含当天0点实例,包含前一天0点实例。 时间维度/实例范围选择:按天/前一天(-24,0]:表示依赖前一天所有小时实例,包含当天0点实例,不包含前一天0点实例。 ![]() |
小时/分钟依赖天/周/月/年 | 小时依赖天/周/月/年、分钟依赖天/周/月/年的逻辑类似,即上游周期内所有实例都执行完成,才执行下游实例。 下面以小时依赖周为例说明: 下游节点为小时任务,每2小时执行一次。上游周任务,每周一、三、五执行。 ![]() | 时间维度/实例范围选择:按周/本周:表示上游本周实例都执行完成,才会执行下游小时任务实例。 ![]() |
分钟依赖小时 | 下游节点为分钟任务,每五分钟执行一次,上游为小时任务,每小时执行一次。 ![]() | 时间维度/实例范围选择:按小时/当前小时:表示下游分钟任务等待上游当前小时执行完才能执行。 ![]() |
小时依赖分钟 | 小时依赖分钟分为两种模式: 模式一:依赖当前小时所有分钟实例。 模式二:依赖前一个小时所有分钟实例(分为包含当前小时0分钟实例和不包含当前小时0分钟实例)。 下游节点为小时任务,每1小时执行一次。上游分钟任务,每10分钟执行一次。 模式一:依赖当前小时所有分钟实例。 ![]() | 时间维度/实例范围选择:按小时/当前小时:表示下游小时实例依赖上游当前小时所有分钟实例。 ![]() |
| 模式二:依赖前一个小时所有分钟实例。 ![]() | 时间维度/实例范围选择:按小时/前一个小时(-60,0]:表示依赖前一小时所有分钟实例,包含当前小时0分的实例,不包含前一个小时0分的实例。 时间维度/实例范围选择:按小时/前一个小时:表示依赖前一小时所有分钟实例,包含前一个小时0分钟的实例,不包含当前小时0分的实例。 ![]() |
周/月/年依赖分钟/小时 | 周/月/年任务依赖分钟/小时任务的逻辑类似,即支持选择依赖本周期(周/月/年)或者上周期(年支持上周期)。 以月依赖小时为例,下游节点每月1号、15号、最后一天执行,上游小时任务为每2小时执行一次。 ![]() | 时间维度/实例范围选择:按月/本月:表示依赖本月所有小时实例。 时间维度/实例范围选择:按月/上月:表示依赖上月所有小时实例。 ![]() |
周依赖天 | 周依赖天包含两种配置模式 模式一:按周配置,支持选择依赖上周所有实例、上周五、上周日、本周所有实例。 模式二:按天配置,支持选择依赖当前实例、依赖前一天实例。 下游节点为周任务,每周一执行。上游节点为天任务,每天0点执行。 ![]() | 时间维度/实例范围选择:按周/上周:表示依赖上周所有天实例。 时间维度/实例范围选择:按周/上周五:表示依赖上周五实例。 时间维度/实例范围选择:按周/上周日:表示依赖上周日实例。 时间维度/实例范围选择:按周/本周:表示依赖本周所有天实例。 ![]() 时间维度/实例范围选择:按天/当天:表示依赖当天的天实例。 时间维度/实例范围选择:按天/前一天:表示依赖前一天的天实例。 ![]() |
月依赖天 | 月依赖天包含两种配置模式 模式一:按月配置,支持选择依赖上月所有实例、上月末实例、本月所有实例。 模式二:按天配置,支持选择依赖当天实例、依赖前一天实例。 下游节点为月任务,每月1号执行。上游节点为天任务,每天0点执行。 ![]() | 时间维度/实例范围选择:按月/上月:表示依赖上月所有实例。 时间维度/实例范围选择:按月/上月末:表示依赖上月月末实例。 时间维度/实例范围选择:按月/本月:表示依赖本月所有实例。 ![]() 时间维度/实例范围选择:按天/当天:表示依赖当天的天实例。 时间维度/实例范围选择:按天/前一天:表示依赖前一天的天实例。 ![]() |
1.4 依赖偏移
依赖偏移是指当前周期上游的其他当前周期。例如依赖上一周期,是指本节点本次实例运行,依赖相应节点上一周期实例的运行情况,待上一周期实例运行成功后,本节点才会运行。通常,若本节点需依赖上游昨天产出的数据,或小时、分钟任务依赖自己上一小时或分钟实例,可设置跨周期依赖。
场景说明:这种模式打破了“当前周期”的限制,引入了历史状态对当前计算的影响。
详细场景说明
场景细分 | 依赖逻辑 | 依赖配置 |
自定义偏移-列表 | 若下游今天的数据依赖上游昨天的数据,则可配置为下游依赖上游前一天的实例。 ![]() | 选择上游天任务后,配置方式选择自定义,时间维度/实例范围选择:列表(天)、-1,-1表示向前一个周期,即表示昨天。 列表模式支持定义多个实例,比如依赖昨天、前天和大前天,则可以配置为-1,-2,-3。也可以配置任意无需连续时间,比如-1,-3,-7。 ![]() |
自定义偏移-区间 | 若上游为天任务,下游小时任务需要计算近7天均值,因此依赖上游天任务最近7天实例(包含今天)。 ![]() | 配置方式选择:自定义、时间维度/实例范围:区间(天)、-6,0。表示今天的小时任务依赖的是从今天天实例开始往期最近7天的实例。 ![]() |
天依赖小时-依赖前一天小时实例 | 若下游每个小时的数据依赖上游昨天的数据,则可配置为下游依赖上游前一天所有小时实例。 ![]() | 选择上游小时任务后,配置方式选择推荐策略,时间维度/实例范围选择:按天、前一天[-24,0),表示依赖前一天所有小时实例,即从00:00到23:00的实例。 ![]() |
二、任务自依赖
任务自依赖是指同一任务中不同实例之间的依赖关系。当前支持的自依赖配置有:并行、无序串行、有序串行。
配置方式
任务配置>调度设置>依赖配置>自依赖

自依赖 | 描述 |
并行 | 前一个周期实例和后一个周期实例之间没有依赖关系,如果一个任务同时存在多个实例,多个实例会同时运行。 |
无序串行 | 当前实例和前一个周期实例没有依赖关系,如果一个任务同时存在多个实例,系统随机选取一个实例运行。同时只有一个实例是运行状态。 |
有序串行 | 当前实例依赖前一个周期实例的状态。 |
依赖逻辑

三、工作流自依赖
工作流自依赖表示当前任务依赖本工作流上个周期的所有任务。
生效条件:
1. 仅支持当前任务所在工作流的任务全部为同周期的情况,如果非同周期则不生效,请在工作流-统一调度上进行配置。
2. 工作流中的孤立节点(即没有上游和下游任务)不参与工作流自依赖。
配置方式
工作流配置>调度配置>工作流自依赖选择是

依赖逻辑
举例:工作流中仅包含A、B、C、D四个任务,其中C依赖B、B依赖A,D为孤立节点。若工作流配置为自依赖,则工作流中A任务下个周期的实例依赖C任务上个周期的实例,因为D任务为孤立节点,则不参与工作流自依赖。

四、依赖下游
配置方式
依赖下游任务是指当前任务可以从所有下游(包含间接下游)中选择任务进行依赖,用于满足用户的一些特殊依赖场景。
例如:A 任务是 B 任务的上游任务,B1 周期实例依赖 A1 周期实例,A1 周期实例想依赖 B2 周期实例,即任务上为 A 依赖 B、B 依赖 A 的配置。则可以在 A 任务的调度配置-依赖上游任务中配置 B 任务。
任务之间可以存在循环依赖的关系,但实例之间不能存在循环依赖的关系,因此系统会定期针对实例的依赖关系进行检测,任务上线后若存在实例循环依赖的情况,将通过邮件和短信的方式向您发送告警。


依赖逻辑:下图以上游任务依赖下游任务的上个周期实例为例,说明实例依赖关系。

附录
下表汇总了各种上下游调度周期组合下的可选依赖配置。
上游为分钟任务:
下游周期 | 可选配置 |
分钟 | 1. 按分钟/当前分钟:依赖同一数据时间的实例。 2. 按分钟/前一周期:依赖上一个数据时间的实例。 |
小时 | 1. 按小时/前一个小时 (-60,0]:依赖前一小时内 (-60,0] 的所有上游分钟实例。 2. 按小时/前一个小时 [-60,0):依赖前一小时内 [-60,0) 的所有上游分钟实例。 3. 按小时/当前小时:依赖当前小时内所有上游分钟实例。 |
天 | 1. 按天/前一天 (-24×60,0]:依赖前一天内 (-24×60,0] 的所有上游分钟实例。 2. 按天/前一天 [-24×60,0):依赖前一天内 [-24×60,0) 的所有上游分钟实例。 3. 按天/当天:依赖当天内所有上游分钟实例。 |
周 | 1. 按周/上周:依赖上周内所有分钟实例。 2. 按周/本周:依赖本周内所有分钟实例。 |
月 | 1. 按月/上月:依赖上月内所有分钟实例。 2. 按月/本月:依赖本月内所有分钟实例。 |
年 | 按年/本年:依赖本年内所有分钟实例。 |
一次性 | 按天/当天:依赖指定时间所在日期内的所有分钟实例。 |
上游为小时任务:
下游周期 | 可选配置 |
分钟 | 按小时/当前小时:当前小时内的所有分钟任务需等待上游小时任务运行完成后方可运行。 |
小时 | 按小时/最近实例:依赖最近一次数据时间的实例。优先查找 [当天 0 点, 当前时间],若未找到则查找 [当前时间, 第二天 0 点)。 |
天 | 1. 按天/前一天 (-24,0]:依赖前一天内 (-24,0] 的所有上游小时实例。 2. 按天/前一天 [-24,0):依赖前一天内 [-24,0) 的所有上游小时实例。 3. 按天/当天:依赖当天内所有上游小时实例。 |
周 | 1. 按周/上周:依赖上周内所有小时实例。 2. 按周/本周:依赖本周内所有小时实例。 |
月 | 1. 按月/上月:依赖上月内所有小时实例。 2. 按月/本月:依赖本月内所有小时实例。 |
年 | 按年/本年:依赖本年内所有小时实例。 |
一次性 | 按天/当天:依赖指定时间所在日期内的所有小时实例。 |
上游为天任务:
下游周期 | 可选配置 |
分钟 | 按天/当天:当天内的所有分钟任务需等待上游天任务运行完成后方可运行。 |
小时 | 按天/当天:当天内的所有小时任务需等待上游天任务运行完成后方可运行。 |
天 | 按天/当天:依赖上游当天的天实例。 |
周 | 1. 按周/上周:依赖上周所有天实例。 2. 按周/上周五:依赖上周五的天实例。 3. 按周/上周日:依赖上周日的天实例。 4. 按周/本周:依赖本周所有天实例。 5. 按天/当天:依赖当天的天实例。 6. 按天/前一天:依赖前一天的天实例。 |
月 | 1. 按月/上月:依赖上月所有天实例。 2. 按月/上月末:依赖上月最后一天的天实例。 3. 按月/本月:依赖本月所有天实例。 4. 按天/当天:依赖当天的天实例。 5. 按天/前一天:依赖前一天的天实例。 |
年 | 1. 按天/本年所有天:依赖本年内所有天实例。 2. 按天/当天:依赖同一数据时间的天实例。 3. 按天/前一天:依赖前一天数据时间的天实例。 |
一次性 | 按天/当天:依赖指定时间所在日期内的天实例。 |
上游为周任务:
下游周期 | 可选配置 |
分钟 | 按周/本周:本周内的所有分钟任务需等待上游周任务运行完成后方可运行。 |
小时 | 按周/本周:本周内的所有小时任务需等待上游周任务运行完成后方可运行。 |
天 | 1. 按周/本周:本周内的所有天任务需等待上游周任务运行完成后方可运行。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
周 | 1. 按周/本周:依赖本周所有上游周实例。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
月 | 1. 按月/本月:本月内的所有周任务需等待上游月任务运行完成后方可运行。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
年 | 按年/本年:本年内的所有周任务需等待上游年任务运行完成后方可运行。 |
一次性 | 按周/本周:本周内的一次性任务需等待上游周任务运行完成后方可运行。 |
上游为月任务:
下游周期 | 可选配置 |
分钟 | 按月/本月:本月内的所有分钟任务需等待上游月任务运行完成后方可运行。 |
小时 | 按月/本月:本月内的所有小时任务需等待上游月任务运行完成后方可运行。 |
天 | 1. 按月/本月:本月内的所有天任务需等待上游月任务运行完成后方可运行。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
周 | 1. 按月/本月:本月内的所有周任务需等待上游月任务运行完成后方可运行。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
月 | 1. 按月/本月:依赖本月所有上游月实例。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
年 | 按年/本年:本年内的所有月任务需等待上游年任务运行完成后方可运行。 |
一次性 | 按月/本月:本月内的一次性任务需等待上游月任务运行完成后方可运行。 |
上游为年任务:
下游周期 | 可选配置 |
分钟 | 按年/本年:本年内的所有分钟任务需等待上游年任务运行完成后方可运行。 |
小时 | 按年/本年:本年内的所有小时任务需等待上游年任务运行完成后方可运行。 |
天 | 1. 按年/本年:本年内的所有天任务需等待上游年任务运行完成后方可运行。 2. 按天/最近一次数据时间的实例:依赖当前时间及之前最近一次数据时间的上游实例。 |
周 | 按年/本年:本年内的所有周任务需等待上游年任务运行完成后方可运行。 |
月 | 按年/本年:本年内的所有月任务需等待上游年任务运行完成后方可运行。 |
年 | 按年/本年:依赖本年内所有上游年实例。 |
一次性 | 按年/本年:本年内的一次性任务需等待上游年任务运行完成后方可运行。 |
上游为一次性任务:
下游周期 | 可选配置 |
所有周期类型 | 所有实例均依赖一次性任务的唯一实例,与数据时间无关。 |







































