本文为您介绍依赖关系的相关问题。

为什么会出现自动解析后提交本节点失败,报错依赖的父节点输出不存在的情况?

提交失败
出现上述情况有以下两种原因:
  • 上游节点未提交,提交后可以再次尝试。
  • 上游节点已经提交,但上游节点的输出名不是workshop_yanshi.tb_2
说明 通常通过自动解析得到的父节点输出名、本节点输出名会根据INSERT、CREATE、FROM后的表名获取,请确保配置方式与自动解析依赖关系所介绍的方式一致。详情请参见自动解析依赖关系

本节点的输出中,下游节点名称、下游节点ID都是空且不能填写内容吗?

如果本节点下游无子节点,则无内容。待本节点下游配置子节点后,便会自动解析出内容。

节点的输出名称的作用是什么?

节点的输出名称用于建立节点间的依赖关系。假设节点A的输出名称是ABC,而节点B将ABC作为它的输入,则节点A与节点B之间便建立了上下游关系。

一个节点可以有多个输出名称吗?

可以。下游节点引用本节点的任何一个输出名称作为下游节点的父节点输出名称,都将与本节点建立依赖关系。

多个节点可以有相同的输出名称吗?

不可以。每个节点的输出名称必须在阿里云账号中是唯一的。如果需要多个节点产出数据至同一张MaxCompute表,则这些节点的输出建议用表名_分区标识。

使用自动解析依赖关系时,如何不解析到中间表?

在SQL代码中选中中间表名并右键单击删除输入删除输出,再次执行自动解析输入输出即可。

最上游任务应如何配置依赖关系?

通常可以选择依赖在本工作空间根节点上。

为什么在节点A搜索上游节点输出名时,搜索到了节点B不存在的输出名?

因为搜索功能是基于已经提交的节点信息来进行搜索,如果节点B提交成功后,您又删除了节点B的输出名称且未提交至调度系统,则在节点A上仍然能搜到节点B已删除的输出名。

有A、B、C三个任务,如何实现每个小时执行一次A->B->C(A执行完了B再执行,B执行完了C再执行)的任务流程?

将A、B、C的依赖关系设置为A的输出为B的输入,B的输出为C的输入,同时设置A、B、C的调度周期都为小时即可。

如何处理依赖的上游没有解析到父节点ID,提交报错的情况?

该报错并不是指该表不存在,只是在说明该表不是某个节点的本节点输出,无法通过此表去找到产出这个表数据的节点,从而与该节点挂上依赖。

通过上游节点的本节点输出作为下游节点的本节点输入,根据上文自动解析的原理可知,在SQL中查询xc_demo_partition表,但自动解析时没有通过此表找到上游节点,说明没有一个节点将这个表xc_demo_partition作为本节点输出。报错
您可以通过下述方法解决该问题:
  1. 找到产出该表的节点任务,查看该节点任务的本节点输出。
    如果不知道哪个节点中有操作该表,可以使用代码搜索功能,通过关键字进行模糊查找。代码搜索
  2. 如果是本地上传的表数据,或者无需依赖该节点,您可以选择在代码区右键,选择删除输入删除输入
说明 为保证代码血缘的准确性,建议减少使用自定义依赖的次数。

天任务依赖小时任务,如何实现天任务每天12:00定时运行,无需等待24个小时的任务实例运行结束?

设置天任务依赖小时任务,则需要等待24个小时任务全部运行完成才能开始运行天任务。

如果您需要设置天任务每天12:00定时运行,请单击上游小时任务编辑页面右侧的调度配置,在时间属性区域,选中依赖上一周期 > 本节点

您还需要在下游天任务的调度配置 > 时间属性区域,设置天任务的定时时间为每天12:00,无需设置跨周期依赖。

通过上述配置,等待上游小时任务定时时间为12:00的实例运行成功后,下游天任务便会执行。

如何实现天任务依赖小时任务昨天的数据?

您可以单击下游天任务编辑页面右侧的调度配置,在时间属性区域,选中依赖上一周期 > 自定义,输入上游小时任务的节点ID。

什么情况下配置依赖上一周期的依赖项为本节点?

  • 本节点依赖自己上一周期产出的数据,如果您需要确认上一周期产出数据的时间,请在任务的调度配置 > 时间属性区域,配置依赖上一周期 > 本节点
  • 小时任务依赖天任务,当上游天任务运行完成时,已到下游小时任务的多个周期定时时间,导致小时任务多周期并发调度。此时您可以在任务的调度配置 > 时间属性区域,配置依赖上一周期 > 本节点

下游任务依赖上游任务的运行规则是什么?

在DataWorks调度系统中,下游任务生成的实例会找到当天离自己最近结束的一个上游实例作为上游依赖。如果依赖的上游实例运行成功,才会触发本节点实例运行。如果上游节点每天生成多个实例,则下游无法识别离它最近结束的实例,导致下游必须等上游当天生成的所有实例都完成后,下游任务才能运行。