依赖检查节点

当标准的上下游依赖无法满足您复杂的业务场景时——例如,天任务需等待前一天所有小时任务完成,或需要组合多个任务的“且/或”条件——您就需要一个更灵活的工具。本文介绍如何使用依赖检查节点来构建跨周期、跨工作流、跨工作空间的复杂依赖检查,让您精准控制任务的触发时机,确保数据处理的准确性和时效性。

功能概述

依赖检查节点是一个强大的、灵活的依赖关系检查工具。当需要处理复杂的、跨周期的依赖场景时,例如天任务需要等待前一天所有小时任务都成功后才能运行,或者需要同时满足多个来自不同工作空间的任务条件时,依赖检查节点是您的最佳选择。

核心能力:

  • 跨实体依赖:支持跨工作空间、跨工作流设置依赖。

  • 跨周期依赖:精确指定跨周期依赖时,所依赖的上游实例的时间范围。

  • 复杂逻辑组合:支持通过且(AND)与或(OR)关系组合多个依赖检查条件。

  • 自定义检查策略:可灵活设置检查频率和最大等待时间,超时则任务失败。

配置界面概览

依赖检查节点的配置主要分为两部分:依赖检查检查设置

image

配置依赖检查节点

依赖检查节点的配置核心是构建一个依赖检查逻辑。您可以定义多个检查项和检查组,并通过且/或关系进行自由组合。每个检查项都指向一个或多个上游节点在特定时间范围内的实例。当依赖检查节点运行时,它会评估整个逻辑表达式,最终返回一个布尔值(True/False),以此决定下游节点是执行还是阻塞。

image

配置依赖检查项

支持在一个依赖检查节点中设置多个检查组,每个组内可以包含多个检查项,从而构建复杂的依赖网络。

  1. 添加检查组和检查项

    • 点击+ 添加项来创建一个新的依赖检查条件。

    • 多个检查项可以被组织在一个检查组内。

  2. 配置检查项内容

    • 任务:输入您要依赖的任务输出名名称ID进行搜索和选择。

      • 支持选择本工作空间同工作流、跨工作流或其他有权限的工作空间下的任务。

        重要

        若仅实现简单跨空间或跨工作流依赖调度,可参考如何配置跨业务流程、跨工作空间的调度依赖

      • 如果选择一个尚未发布的任务,系统会提示您所选的任务未发布至生产环境,运行时可能会检查失败。

    • 时间周期:时间周期决定节点运行时要检查上游任务的哪个历史实例。根据需要选择不同的时间周期类型,以下是详细说明。

      说明

      检查项内为的关系,即若选择当天的所有小时任务,需要全部运行成功才返回True。

      时间周期类型

      可选项

      说明

      分钟

      前 X 分钟 (X取值范围: 0-59)

      检查相对于当前时间的 X 分钟前的实例。当前分钟 对应 前 0 分钟

      小时

      前 X 小时 (X取值范围: 0-23)

      检查相对于当前时间的 X 小时前的实例。当前小时 对应 前 0 小时

      前 X 天 (X取值范围: 0-7)

      检查 X 天前的实例。当天 对应 前 0 天

      本周一到周日上周一到周日上周一 、上周二 ... 上周日

      检查指定周范围内的实例。

      本月第一天到最后一天 本月第一天 上个月最后一天 等。

      检查指定月份范围内的实例。

  3. 设置逻辑关系(且/或)

    • 在界面左侧,您可以设置检查组之间以及组内检查项之间的逻辑关系。

      • 且(AND):表示所有关联的检查项/检查组都必须成功。

      • 或(OR):表示只要有一个关联的检查项/检查组成功即可。

配置检查设置

在页面的最下方,您可以定义节点的检查行为:

  • 检查间隔:设置每隔多久检查一次所有依赖项的状态。最小值为 1 分钟/次

  • 最大检查时长:设置节点最长的等待时间。如果超过此时长,所有依赖项仍未满足条件,则依赖检查节点自身将运行失败。最大值为 1440 分钟(24小时)。

运行逻辑与状态

  • 检查中:在最大检查时长内,只要有任何一个依赖条件未满足,节点任务就处于运行中状态,并会根据“检查间隔”周期性地重试。

  • 运行成功:在最大检查时长内,所有依赖条件根据您设定的“且/或”逻辑被满足,节点状态变为运行成功

  • 运行失败

    1. 超过最大检查时长后,依赖条件仍未被满足。

    2. 在检查过程中,如果发现某个必须成功的依赖项(例如在“且”关系中)所指向的任务不存在,节点会提前终止并置为运行失败

实战案例:让“天任务”等待“前一日所有小时任务”

回到开头那个最经典的问题。假设有一个每日汇总报表的天任务(rpt_daily_summary),它必须等到一个名为 ods_hourly_log 的小时任务在前一天(00:00 到 23:59)的所有24个实例都成功运行后,才能启动。

  1. 拖入依赖检查节点
    在你的天任务 rpt_daily_summary 上游,拖入一个依赖检查节点,并连接它们。

    image
  2. 配置依赖检查项
    双击打开依赖检查节点,配置节点的依赖检查项。

    • 添加依赖任务:点击 + 添加项,在任务输入框里,搜索并选择依赖的那个小时任务 ods_hourly_log

    • 定义时间范围:需要检查的是 “前一天” 的所有小时实例,故时间周期选择 ,然后选择 1

      系统将检查前一个自然日内这个小时任务产生的所有实例(24个)是否全部成功。
    • 设置逻辑关系:仅此一个检查项,检查组内部以及组之间的逻辑关系都保持默认的 且(AND) 即可。

  3. 配置检查策略

    • 检查间隔:比如设置为5分钟/次,表示如果依赖还没满足,系统将等待5分钟,然后再去检查一次。

    • 最大检查时长:比如设置为180分钟,表示从天任务的定时时间开始,最多等待3个小时。如果3小时后,前一天的小时任务还没全部运行完毕,这个依赖检查节点就直接报错失败,下游的天任务也不会启动。这能防止无限期等待,及时暴露问题。

配置完成,保存并发布。这样,每天你的日报任务就会等到所有小时数据准备就绪后再运行。

附录:与调度依赖区别

节点配置的检查项任务和调度配置中的调度依赖不同,区别如下:

image

特性

依赖检查节点中的被检查节点

调度依赖节点

触发方式

依赖检查节点主动轮询检查项的状态,检查项的节点不会触发或修改依赖检查节点的状态。

目标节点到运行时间后,查看调度依赖节点的状态是否满足要求。

DAG 可视化

依赖关系内聚在节点配置中,不体现在DAG图上。

DAG图中展示为上下游依赖连线。

补数据/重跑联动

单独重跑/补数据检查项的节点,不会自动触发目标节点。

对调度依赖节点进行补数据,可选择性触发目标节点。