依赖某节点同周期指本节点本周期运行,依赖上游节点当前周期的数据产出情况(即任务执行情况),待上游当前周期实例执行成功后,本节点才会运行。通常,若本节点需依赖上游节点今天产出的数据,可设置同周期依赖。本文为您介绍同周期依赖的配置原理及方式。

为保障调度依赖配置过程流畅,您需先了解调度依赖配置原因与基本原则不支持调度依赖的场景(非周期性调度产出数据的表)

背景信息

DataWorks通过节点的输入输出设置调度依赖,建议您根据节点查询及写入的表血缘关系设置节点的调度依赖关系。

DataWorks提供了自动解析机制,可根据血缘关系自动快速解析节点的输入输出;并支持通过拉线方式设置依赖关系,配置节点输入输出。当使用拉线或自动解析方式配置的依赖关系不符合预期,您可手动编辑节点依赖,删除或添加某节点的输入输出。

配置节点输出请着重注意:
类别 描述
节点名与节点产出表名一致 对同步任务的产出表进行加工时,可通过自动解析正常依赖离线同步任务。

您需手动将离线同步节点的产出表配置为节点输出,否则下游SQL节点提交时可能报错当前节点依赖的父节点输出名${projectname.tablename}不存在,不能提交本节点,请确保拥有该输出名的父节点:已被提交

保障节点输出在同地域下唯一 由于DataWorks通过输出名称定位节点,因此,为保障节点输出名称唯一,如下情况您需要注意。
说明 节点输出的格式为projectname.tablename。若节点输出已产生,仅修改节点名称,节点输出不会变更。因此,您需直接修改节点输出的名称。

注意事项

配置同周期调度依赖的注意事项。
类别 描述 相关参考
同周期依赖图例展示 同周期依赖在DataWorks的DAG图中以实线的形式展示。 附录:DAG图功能介绍
同周期依赖无法满足的复杂场景 部分场景下,当同周期依赖不满足预期时,您可设置跨周期依赖。例如,天任务依赖小时任务的场景下,天任务默认依赖小时任务当天所有实例。您可通过小时任务自依赖,实现天任务依赖小时任务指定周期。 必读:复杂依赖场景调度配置原则与示例
预览节点依赖关系 为避免生产调度任务由于依赖关系不符合预期导致生产调度延迟,建议在发布任务前,通过该功能确认各周期实例关系是否符合预期。 预览依赖关系

配置界面

进入数据开发节点的编辑页面,单击右侧导航栏的调度配置,在调度依赖 > 同周期(区域1)配置节点的依赖关系。调度依赖界面功能介绍如下表。
功能 描述 注意事项及相关参考
自动解析(区域2) 配置调度依赖的方式之一,可自动解析节点代码中的表血缘,快速配置节点间的依赖关系。当不确定表在哪个节点产出时,可使用此功能。
  • 开关管控

    您可通过调度配置页面控制单个节点是否启用该功能,也可通过系统配置页面管控空间级别是否开启该功能。

  • 功能说明

    开启自动解析,当节点代码编辑完成后,单击自动解析即可快速配置节点依赖;提交节点时,DataWorks将根据代码自动解析依赖关系。

依赖的上游节点(区域3) 用于定义本节点的上游节点,依赖配置后,上游节点运行成功后本节点才具备运行条件。此处需填写上游节点的节点输出,作为本节点的输入。
依赖的上游节点配置方式如下图。上游节点输出
说明 自动推荐方式:

提交发布至生产环境,并真实产出该表数据的节点才会被解析。被推荐的节点需在前一天提交至调度系统,待第二天数据产出后,才可被自动推荐功能识别。因此,自动推荐的节点存在T+1的延迟。

  • 所有节点都需配置依赖的上游节点

    建议根据表血缘关系配置,若无表血缘关系,可基于业务需求选择依赖工作空间根节点或虚拟节点,详情请参见调度依赖配置指引

  • 确保上游节点已提交

    提交任务时,若报错依赖的上游节点输出不存在,请确保需依赖的上游节点已提交。

本节点的输出(区域4) 其他节点与本节点建立依赖关系的媒介。

其他节点可通过本节点的输出名称找到本节点,并通过调度依赖配置,将本节点设置为他的上游节点。下游节点设置当前节点依赖后,待下游节点提交完成,当前节点对应的节点输出将展示该下游节点名称。DataWorks不支持手动在节点输出界面编辑下游节点。

本节点的输出配置方式如下图。本节点输出
附录:删除或变更节点输出的影响
预览依赖关系(区域5) 节点上下游依赖关系配置完成后,可通过此功能预览依赖关系情况,若不符合预期请及时调整,以免影响任务运行。 预览依赖关系

配置原理

调度依赖配置是将上游节点的输出作为下游节点的输入,形成节点依赖。配置完成后,上游节点运行完成且运行成功,下游节点才会启动运行,保障调度任务在运行时能取到正确的数据。您可通过三种方式配置,无论哪种方式,其原理不变。配置原理

配置方式

通过业务流程面板拉线设置节点依赖

业务流程面板使用拉线方式设置依赖关系时,DataWorks将自动为下游节点添加上游节点_out格式的输出,形成节点依赖。拉线方式
说明 当业务流程面板中的依赖连线删除后,节点调度配置中也会同步删除该依赖关系。

通过调度配置界面手动添加上游节点依赖

在调度配置界面,通过输入某节点的节点输出,手动添加依赖的上游节点,格式为projectname.tablename手动删除

通过自动解析功能基于表血缘设置节点依赖

说明 目前仅MaxCompute引擎支持该功能。

DataWorks支持通过节点代码中的表血缘,快速设置节点依赖。开启自动解析后,节点产出的表将被自动添加为projectname.tablename格式的节点输出;节点查询的表将被自动添加为节点输入。

  • 不纳入自动解析的场景

    DataWorks中的临时表(即工作空间表管理中定义的固定格式的表。例如,t_开头的表),不会被自动解析为本节点的输出或依赖的上游节点。

  • 通过自动解析配置节点依赖
    自动解析方式配置节点依赖如下图。自动解析各类型节点自动解析支持的关键字,详情请参见各类型节点自动解析场景
  • 修改自动解析的依赖关系
    说明
    修改自动解析的依赖,具体如下。
    场景及方式 描述 操作及结果示例
    开启自动解析时,通过代码删除输入输出 在代码中执行删除或添加操作,并重新解析。
    删除或添加后,自动添加相应注释至自动解析的结果中:
    • --@exclude_input=删除输入
    • --@exclude_output=删除输出
    • --@extra_output=添加输出
    • --@extra_input=添加输入
    删除输入输出
    关闭自动解析时,编辑自动解析的输入输出 DataWorks不支持直接删除已存在下游依赖的节点输出,直接删除将导致下游任务执行或取数异常。

    建议您先调整下游业务,在下游节点移除该上游依赖,再在上游节点删除该节点输出。

    编辑输入输出

后续:确认依赖是否符合预期

配置完成后,为保障任务可以顺利调度执行,建议您执行如下操作:
  • 预览依赖:避免依赖关系不符合预期导致任务调度延迟。
  • 提交检查:提交节点时确认依赖变更是否符合预期。
  • 周期任务依赖确认:节点发布后,需在运维中心确认生产调度任务的依赖是否符合预期。周期任务为生产环境该任务的最新状态,同时,周期实例的实例依赖关系与实例生成方式有关。
详情请参见确认依赖关系配置是否符合预期

常见问题

更多常见问题,请参见调度依赖

最佳实践

跨工作空间,同工作空间跨业务流程设置节点依赖,详情请参见场景3:如何配置跨业务流程、跨工作空间的调度依赖

附录:删除或变更节点输出的影响

  • 删除节点输出对节点产出的表数据无直接影响,详情请参见注意事项
  • 已存在下游依赖,删除或变更节点输出,可能会对下游任务产生严重影响(例如,任务不运行、产生数据质量问题)。详情请参见删除或变更节点输出的影响
    说明 变更节点输出:指节点产出的表数据变更导致节点输出变更,或直接修改节点输出。
  • 自动解析会将节点产出表以projectname.tablename格式设置为节点输出,若产出表变更,可能会导致下游变为孤立节点不被调度,请谨慎操作。若当前节点产出的表需转移至其他节点,请参考删除或变更节点输出的影响
  • 删除存在下游依赖的节点或节点输出前,需先调整业务代码,移除当前节点的下游依赖。