依赖上一周期指本节点本次实例运行,依赖相应节点上一周期实例的运行情况,待上一周期实例运行成功后,本节点才会运行。通常,若本节点需依赖上游昨天产出的数据,或小时、分钟任务依赖自己上一小时或分钟实例,可设置跨周期依赖。本文为您介绍跨周期依赖的配置及依赖形式。

注意事项

配置依赖上一周期的注意事项如下。
类别描述相关参考
跨周期依赖图例展示跨周期依赖在DataWorks的DAG图中以虚线的形式展示。附录:DAG图功能介绍
已设置跨周期依赖某节点时,请确认是否还存在并需要同周期依赖配置依赖关系后,下游依赖的所有上游任务均需执行完成,下游任务才会执行。

由于同周期依赖自动解析功能默认开启,若已设置跨周期依赖,请确认是否还需设置同周期依赖,若不需要,则需删除同周期自动解析产生的依赖关系,以免影响下游正常运行。

删除依赖关系
复杂场景是否需设置跨周期依赖部分场景下,当同周期依赖不满足预期时,您可设置跨周期依赖。

例如,天任务依赖小时任务的场景下,天任务默认依赖小时任务当天所有实例。您可通过小时任务自依赖,实现天任务依赖小时任务指定周期。

必读:复杂依赖场景调度配置原则与示例
预览节点依赖关系为避免生产调度任务由于依赖关系不符合预期导致生产调度延迟,建议在发布任务前,通过该功能确认各周期实例关系是否符合预期。预览依赖关系
任务发布说明跨周期依赖的上下游任务,请确保均已发布至生产环境,发布后才可在生产环境运维中心查看该环境的依赖关系。发布任务

配置入口

进入数据开发节点的编辑页面,单击右侧导航栏的调度配置,在调度依赖 > 上一周期区域配置节点的依赖关系。调度依赖

依赖形式

依赖上一周期支持的依赖形式如下表所示。
依赖形式节点依赖关系业务场景
依赖上一周期:本节点(自依赖)

本节点本次实例运行,依赖于本节点上一周期的实例运行结果。即本次节点是否运行,取决于本节点上一周期的实例是否运行成功。

本节点本次实例运行,取决于本节点上一周期业务数据的产出情况。

依赖上一周期:一级子节点

本节点本次实例运行,取决于下游节点上一周期的实例运行情况。即本次节点是否运行,取决于该节点的下游节点在上一周期的实例是否运行成功。

本节点本次实例的运行,依赖于该节点的下游节点在上一周期对本节点上一周期结果表(即本节点输出表)数据的清洗结果是否成功。

依赖上一周期:其他节点

本节点本次实例的运行,依赖于其他节点在上一周期的实例运行结果。即本次节点是否运行,取决于其依赖的其他节点在上一周期实例是否运行成功。

本节点本次实例运行,在业务逻辑上需要依赖其它业务的数据,但本节点中不包含涉及其他业务数据的相关操作。

依赖上一周期:本节点(自依赖)

本节点本次实例运行,取决于本节点上一周期业务数据的产出情况。任务的依赖设置及依赖关系示例如下。依赖上一周期:本节点
说明 小时分钟任务不同周期实例的执行结果相互影响。
任务依赖小时分钟任务时,小时、分钟任务是否设置自依赖,会影响天任务的执行时间:
  • 小时、分钟任务未设置自依赖

    天任务默认依赖小时、分钟任务当天所有的实例,即天任务会对小时、分钟任务当天产出的所有表数据进行汇总加工。

  • 小时、分钟任务设置自依赖

    天任务根据挂载依赖:就近原则,挂载距离自己定时时间最近的某个小时、分钟实例,而非依赖当天所有小时、分钟实例。

具体依赖情况,详情请参见附录:复杂依赖场景汇总

依赖上一周期:一级子节点

本节点本次实例运行,依赖其下游节点上一周期对本节点上一周期表数据的加工结果。
例如:节点C包含A、B两个下游节点,依赖一级子节点是指节点C依赖A、B两个节点在上一周期的运行结果(图中示例当前周期为T,上一周期为T-1)。当A、B两个节点上一周期均运行成功时,本次节点C才会启动运行。依赖上一周期:一级子节点

依赖上一周期:其他节点

本次节点是否运行,取决于其他节点在上一周期实例是否运行成功。
例如:节点A、B为节点C的两个下游节点,依赖其他节点是指节点B依赖D节点在上一周期的运行结果(图中示例当前周期为T,上一周期为T-1)。当D节点上一周期实例运行成功时,本次节点B才会启动运行。依赖上一周期:其他节点

是否沿用上游的空跑属性

通常,使用分支节点时,需考虑该配置。
  • 配置入口
    您可在调度依赖中配置跳过上游的空跑属性,从而使下游节点不被上一周期该节点的空跑属性影响。沿用空跑属性
  • 应用场景

    某节点包含多个下游节点,在任务执行过程中,下游部分节点会被置为空跑状态。此时,当下游的空跑节点配置了依赖自身的上一周期,则该节点的空跑属性会不断向下传递至其子节点,导致出现该节点持续空跑的情况。若您不希望子节点延续被依赖节点的空跑属性时,可在调度依赖中设置跳过上游的空跑属性

  • 场景示例
    • 假设Assign_Ndoe为赋值节点,Branch_Node为分支节点,Shell_Node1、Shell_Node2为Branch_Node的下游节点。该节点均为天调度节点。
    • 实际运行时,Shell_Node1被置为空跑,Shell_Node2正常运行。
    • Shell_Node1节点设置了依赖自身的上一周期。
    • 本周期(T)Shell_Node1节点生成的周期实例名称为Shell_Node1'
    • 上一周期(T-1)Shell_Node1节点生成的周期实例名称为Shell_Node1
    高级配置示例本周期(T)的周期实例Shell_Node1',会依赖上一周期(T-1)的周期实例Shell_Node1运行,下游节点会延续上游节点的空跑属性,导致Shell_Node1节点永远空跑。

预览依赖关系

配置完成后,您可预览该节点配置的依赖关系,详情请参见后续:确认依赖是否符合预期