DataWorks V2.0中调度依赖在配置时,需要根据本节点输出名称作为关联项来给任务间设置依赖关系。本文将为您介绍如何配置任务调度依赖的输入输出。

配置任务的本节点输入

您可以通过以下两种方式,配置本节点输入。

  • 使用代码自动解析功能,解析出任务的依赖。
  • 手动输入任务依赖(手动输入父节点的本节点的输出名称)。

配置本节点输入
说明 手动输入上游节点时,输入的是父节点的本节点的输出名称。如果父节点的任务名称和父节点的本节点输出名称不一致,请务必正确输入本节点输出名称。
配置上游节点时,自动解析出来的上游节点,是一个无效的上游依赖。您可以通过查看解析出来的上游依赖,在父节点ID这一列是否显示有值,来识别设置的依赖是否有效的方法。
父节点ID

任务依赖的配置,实质上是给两个节点设置节点间的依赖关系。只有真实存在的节点,才能够设置有效的依赖关系,任务依赖才能设置成功。

无效的上游依赖

无效的上游依赖通常有以下两种情况:
  • 父节点不存在。
    父节点不存在
  • 父节点输出不存在。
    父节点输出不存在

无效的上游依赖通常是由于解析出来的父节点输出名称不存在。本示例中,可能是由于表project_b_name.pm_table_b没有产出任务,或该表产出任务的本节点输出的配置不正确,导致无法解析出来。您可以通过以下两种方案解决该问题:

  • 确认这个表是否有产出任务。
  • 确认这个表产出任务的本节点输出名称,将该本节点的输出名称手动输入到依赖的上游节点中。
    手动设置依赖
说明 手动输入上游节点时,输入的是父节点的本节点的输出名称。如果父节点的任务名称和父节点的本节点输出名称不一致,请务必正确输入本节点输出名称。

例如,上游节点A的本节点输出名称是A1,下游节点B需要依赖A,此时应该在依赖上游节点的输入框中输入A1,并单击右侧的加号进行添加。

配置上游依赖

如果您的表是从源库抽取出来,不存在上游,您可以通过单击使用工作空间根节点获得上游依赖。
配置上游依赖

配置任务的本节点输出

本节点名称、本节点输出名称和本节点输出表名共用同一个名称,可以高效配置本节点输出。

  • 能够快速的知道这个任务操作的是哪个表。
  • 能够快速知道这个任务失败后造成的影响范围有多大。
  • 使用自动解析配置任务依赖时,只要本节点输出符合三名合一的规则,自动解析的精准性能得到大大的提升。

自动解析

自动解析:通过代码自动解析调度依赖关系。

自动解析的实现原理:代码中只能拿到表名,自动解析功能可以根据表名解析出对应的产出任务。

类型节点代码如下所示。
INSERT OVERWRITE TABLE pm_table_a SELECT * FROM project_b_name.pm_table_b ;
解析出来的依赖关系如下。
依赖关系
DataWorks会自动解析本节点,即依赖project_b_name产出pm_table_b的节点,同时本节点最终产出 pm_table_a ,因此父节点输出名称为project_b_name.pm_table_b,本节点的输出名称为project_name.pm_table_a(本工作空间名称为test_pm_01)。
  • 如果您不想使用从代码解析到的依赖,则选择
  • 如果代码中有很多表是临时表:如t_开头的表为临时表。则该表不会被解析为调度依赖。可以通过项目配置,定义以什么形式开头的表为临时表。
  • 如果代码中的一个表,既是产出表又是被引用表(被依赖表),则解析时只解析为产出表。
  • 如果代码中的一个表,被多次引用或者被多次产出,则解析时只解析一个调度依赖关系。
说明 默认情况下,表名为t_开头的会被当成临时表,自动解析不解析临时表。如果t_开头不是临时表,请联系自己的项目管理员到项目配置页面进行修改。
项目配置

删除某表的输入输出

您在进行数据开发时,经常会用到静态表(数据通过本地文件上传到表中),这部分静态数据其实是没有产出任务的。在配置依赖时,需要您删除静态表的输入:如果静态表不满足t_的格式,不会被处理为临时表,此时您需要删除静态表的输入。

您在代码中右键单击表名,选择删除输入
删除输入
如果您是从DataWorksV1.0升级至DataWorks V2.0的用户,则您迁移过来的DataWorks任务的本节点输出默认置为项目名.节点名
默认本节点输出

注意事项

当任务依赖配置完成后,提交的窗口会有一个选项:当输入输出和代码血缘分析不匹配时,是否确认继续执行提交操作。

该选项的前提是您已经确认依赖关系正确。如果不能确认,则可以按照上述方法确认依赖关系。
确认依赖关系

确认依赖关系无误后,直接勾选我确认继续执行提交操作,并单击确认