调度依赖配置指引

更新时间:
复制为 MD 格式

DataWorks 中的调度依赖用于定义周期调度节点(即在调度系统中按周期自动运行的任务节点)之间的上下游关系。配置调度依赖后,系统会确保所有上游节点的实例均运行成功后,下游节点的实例才会被触发执行,从而保障数据按正确的顺序产出和消费。本文介绍调度依赖的基本概念、依赖类型和配置方式,帮助您在配置前建立整体认知,并快速找到适合您场景的操作文档。

功能介绍

调度依赖是 DataWorks 中用于定义节点间上下游关系的机制。通过配置调度依赖,您可以指定一个节点在哪些上游节点运行成功后才开始执行,从而保证数据处理的正确顺序。配置依赖后,DataWorks 调度系统将自动编排执行顺序:仅当所有上游实例运行成功,且时间、资源等条件均满足时,下游实例才会被触发。

DataWorks 通过节点输出名称和节点输入名称匹配来建立节点间的依赖关系。配置依赖的核心操作流程如下:

  1. 上游节点配置输出:为上游节点添加输出名称,通常以 项目名.表名 的形式命名(例如 my_project.dim_user),代表该节点产出的数据表。

  2. 下游节点配置输入:在下游节点中搜索并选择上游节点的输出名称作为本节点的输入(即依赖),完成依赖关系的建立。

  3. 自动解析(可选):对于 SQL 类节点,DataWorks 可以自动解析代码中的 INSERT 和 SELECT 语句,识别输入表和输出表,自动生成依赖配置。您也可以在自动解析的基础上手动调整。支持解析的节点类型参见:各类型节点自动解析场景

重要

每个节点必须至少有一个输出名称。系统会为节点自动生成一个默认输出(格式为 项目名.节点ID_out),即使删除所有自定义输出,该默认输出也会保留。

规则约束

  • 发布生效原则:调度依赖配置仅在节点提交到运维中心后生效。开发节点时的配置不会自动同步至调度环境。

  • 上下游调度状态:依赖关系生效的前提是上游与下游节点实例均已生成,且为正常调度状态。若节点配置异常或者上游实例异常,可能导致节点孤立,无法正常调度。

  • 环路依赖限制:系统禁止存在循环依赖(A 依赖 B,B 依赖 A)的节点,包括直接和间接循环。提交时若检测到环路,系统将阻断发布并报错。

依赖类型

DataWorks 支持两种调度依赖类型:同周期依赖和跨周期依赖,分别适用于不同的业务场景。

先导概念

周期是一个相对概念,其含义由节点的调度时间定义。一个“调度周期”是指节点两次相邻调度实例间的时间偏移量,由其调度频率决定。比如对于天调度任务,其上一周期为前一天的实例;对于小时调度任务,则为上一小时的实例。

调度频率

一个周期

天、周、月、年调度

1 天

说明

对于周、月、年调度任务,实例仍按天维度生成(非调度日为空跑实例)。因此,依赖计算基于天粒度,上一周期实例可能为空跑状态。

小时调度

小时级别的间隔

分钟调度

分钟级别的间隔(如每5分钟)

两种依赖类型

举例:一个天调度节点 A 产出表 dim_user,下游节点 B 消费该表:

  • 同周期依赖:B 的今天的实例等待A 今天的实例运行成功后再运行。即 B 消费的是 A 当天产出的数据。

  • 跨周期依赖:B 的今天的实例等待A 昨天的实例运行成功后再运行。即 B 消费的是 A 前一天产出的数据。

对比项

同周期依赖

跨周期依赖(依赖上一周期)

含义

本节点当前周期的实例运行,依赖上游节点当前周期实例的运行结果。

本节点当前周期的实例运行,依赖指定节点上一周期实例的运行结果。指定节点可以是本节点自身(自依赖)、下游一级子节点或任意其他节点。

DAG 图中的表现

以实线展示。

以虚线展示。

典型场景

节点 B 需要读取节点 A 今天产出的数据。

节点依赖昨天产出的数据(如 T-1 取数);小时/分钟任务通过自依赖实现串行执行,避免多个周期并发。

配置方式

支持自动解析、业务流程拉线、手动添加。

在调度配置面板的"上一周期"区域,选择依赖形式并指定节点ID。

说明:同一对节点之间,同周期依赖和跨周期依赖可以同时存在,但需要明确各自的业务含义。如果您仅需要跨周期依赖,请记得删除系统自动解析产生的同周期依赖,否则下游实例仍需等待上游当前周期实例完成后才能运行,导致不符合预期的延迟。

调度依赖配置指引

为确保调度链路的完整性与可维护性,所有节点均需配置上游依赖后方可发布至运维中心进行自动调度(若无数据依赖,需依赖虚拟节点或根节点)。配置调度依赖时,需梳理节点的业务逻辑,明确依赖对象和依赖类型,选择最合适的配置方式,构建出既稳健可靠又结构清晰的数据工作流。

1. 明确依赖对象

在配置依赖之前,需完成以下准备工作:

  • 梳理血缘关系:确认上游产出的表/分区与下游读取的表/分区是否匹配。

  • 检查调度属性:确保节点的调度周期、生效时间、调度参数等已正确设置,因为调度属性直接影响依赖的挂载行为。

根据当前节点对数据的依赖形式,选择依赖对象。

场景一:依赖于上游节点的直接产出

  • 适用场景:下游节点所需数据,直接来源于另一个由 DataWorks 自动化调度的上游节点所产出的表。

  • 配置策略:强烈建议根据数据血缘关系配置节点依赖。

  • 核心价值:这是最直接、最稳健的方式。调度系统能确保下游总是在上游数据准备就绪后才启动,保证了端到端的数据一致性。

场景二:依赖非调度上游数据(数据就绪驱动)

  • 适用场景:上游数据产出不在 DataWorks 调度系统管理范围内,无法生成调度实例供下游依赖,例如:

    • 外部业务系统推送至 OSS/FTP 的文件;

    • 实时同步产出的表;

    • 第三方同步工具(非 DataWorks 调度)产生的表;

    • 人工手动上传或运行产出的临时表。

  • 配置策略:配置一个诸如 Check 节点等检查节点,来主动检查数据是否就绪(如检查文件是否存在、表分区是否生成等),下游业务节点再依赖于这个 Check 节点。

  • 核心价值:将“数据产出”转化为“调度事件”,实现由 “数据就绪”事件驱动 后续流程,确保在非调度链路场景下的数据正确性。

场景三:无直接数据依赖,但有业务逻辑关联

  • 适用场景:节点在数据处理/代码逻辑上完全独立,但从业务逻辑上需要归属到某个流程或需要被定时调度。

  • 配置策略

    • 依赖虚拟节点:可以将一组相关的任务聚合管理,形成一个逻辑单元,便于统一启停、监控和维护,保证业务条理清晰。

    • 依赖工作空间根节点:确保该任务能被调度系统正常实例化并按时执行,避免其沦为无法自动调度的孤立节点。

  • 核心价值:避免节点孤立,使流程启停和状态监控更加清晰,确保业务逻辑脉络的完整性。

2. 选择依赖类型

若当前节点依赖上游节点的直接产出(即场景一),需要进一步确认,依赖的数据为上游同周期的产出,还是跨周期的产出。

核心判断

看下游实际读取的是上游哪个周期产出的数据。节点周期写入某张表某个分区的数据,大部分场景都是采用调度参数来动态实现,您可参考调度参数支持的格式,了解调度参数的替换原理。若您需要依赖同工作空间某节点,则可检查其调度参数的配置情况。

确认方式

  • 同空间节点:查看上游节点代码中的调度参数。参数替换后写入的是“今天”的分区还是“昨天”的分区。

    • 开发环境看上游节点的调度参数配置和节点代码详情,生产环境看实例详情中的参数替换结果。

  • 跨空间节点:通过数据地图查看上游表的分区信息和变更记录。

    • 确认每天实际写入的分区值。

选择类型

  • 下游代码取的是上游当天/当前周期的分区:同周期。

  • 下游代码取的是上游前一天/上一周期的分区:跨周期。

  • 小时/分钟任务需要串行不并发 :跨周期,即依赖本节点。

重要

未正确确认血缘的后果:

  1. 依赖缺失风险:若存在表血缘但未配置调度依赖,下游任务将在上游实例成功前启动,导致读取不到数据或数据不完整

  2. 参数匹配风险:若依赖配置但分区参数错位(如上游产出今日分区,下游读取昨日分区),将导致数据逻辑错误与质量异常

3. 配置依赖关系

根据步骤1、2确认的依赖对象和依赖形式,选择合适的配置方法进行依赖配置。

DataWorks支持不同调度频率的任务互相依赖挂载,结合同周期/跨周期依赖和调度参数,可实现丰富的调度场景。详见:

4.调度依赖关系确认

配置完成后、发布之前,必须进行验证:

确认方式

说明

配置时:预览依赖

用于提前预览节点当前配置的调度依赖是否符合预期。

  • 目前仅支持查看当前节点的一级上游和一级下游依赖关系。

  • 为确保当前任务依赖关系正确,请确认上游节点为已保存状态。

  • 依赖预览图示中,实线表示同周期依赖,虚线表示跨周期依赖(即依赖上一周期)。

提交时:代码解析结果对比

用于提交节点时,确认当前版本节点依赖变更是否符合预期,及变更对生产的影响。

开启自动解析时,为保障生产数据正常产出,您需要在提交节点时,对节点调度变更的相关操作进行二次确认。可使用该功能保障依赖变更不影响生产任务数据产出。

发布后:查看周期任务

用于节点发布后,在运维中心确认生产调度任务的依赖是否符合预期。

  • 确认生产任务的调度依赖

    标准模式工作空间下,节点依赖关系在开发环境和生产环境依赖可以不一致。生产环境节点的调度依赖需在数据开发界面配置,并且完成发布后才会生效。

    节点发布后,您可进入运维中心的周期任务界面,展开当前任务上下游,查看调度依赖情况。

    重要

    周期任务界面均展示节点在生产环境的最新状态,但周期实例是否存在新加或删除的依赖,与所选实例生成方式有关

  • 确认生产任务的数据情况

    调度依赖确认无误后,您还需确认上下游节点的分区数据读取与写入情况(即调度参数配置是否正确)。避免上游节点产出的数据非当前节点所依赖的数据,导致下游节点出现数据质量问题。

    说明

    若任务发布流程中存在流程管控,建议在任务发布后,进入生产运维中心的周期任务界面,查看任务调度依赖及相关属性,若发现任务不符合预期,请确认任务的发布流程是否被阻塞。详情请参见发布任务

移除依赖影响

在任务运维或迭代过程中,可能需要移除或调整已有的调度依赖。

移除依赖前,请务必评估对下游任务调度行为的影响,避免造成任务孤立或数据事故。

下游依赖场景

移除依赖后的影响

风险等级

下游仅依赖当前节点

下游任务变为孤立节点,失去上游触发机制,不再自动调度运行。

下游依赖多个父节点

下游任务可能在上游数据未就绪时启动,导致数据缺失或计算错误。

下游依赖跨周期实例

若移除跨周期依赖,下游可能读取到错误业务日期的数据,导致数据逻辑混乱。

应用场景

  • 离线数仓分层建设:ODS → DWD → DWS → ADS 全链路依赖配置,确保分层数据按序产出。

  • 标准 ETL 链路:配置同周期依赖,确保下游任务严格等待上游实例成功后执行,保障数据加工链路的顺序性与一致性。

  • 隔日(T+1)报表:配置跨周期依赖(偏移量 -1),使今日任务依赖昨日完整业务数据,实现隔日数据准确分析与产出。

  • 多周期混合聚合:配置跨周期依赖,使天粒度任务依赖小时粒度任务的全周期实例,确保汇总前底层数据完整就绪。

  • 外部数据就绪触发:配置自定义依赖或检查节点,确认外部文件送达或接口就绪后触发流程,实现跨系统调度协同。

  • 复杂工作流控制:利用虚节点聚合多分支依赖,作为流程控制里程碑,简化链路结构并提升监控可视性。

常见问题

以下为典型场景说明,更多调度依赖的常见问题,请参见依赖关系常见问题

  • 节点唯一性相关。

    • 开发环境与生产环境节点形态不同但节点唯一:同一节点在开发环境和生产环境中的调度依赖配置可以不同,即同一个节点在开发环境和生产环境可以拥有两种不同的形态,但节点唯一。

    • 下线节点前需在开发环境与生产环境同时移除下游依赖:由于节点唯一性,为保障下游任务取数及运行无误,DataWorks在下线上游任务前,需先在下游节点调度移除,然后重新配置下游节点需要依赖的上游节点,并提交发布。确保开发环境及生产环境该依赖都被移除后,才可下线上游任务。

  • 与实例生成方式相关。

    • 新建节点时,请确保上下游节点的实例生成方式相同,避免因为实例生成方式不同,上游节点当天生成实例,下游节点隔天生成实例,导致下游实例变为场景:节点孤立

    • 变更已存在节点的调度周期,并且选择发布后及时生成实例时,修改节点的调度依赖时,已生成的实例不会自动删除,节点发布后当天周期实例的依赖情况会存在错乱,详情请参见实时转实例对当天周期实例依赖关系的影响

  • 使用OpenAPI更新作业时出现超出200个上游依赖的报错。

    • 报错详情:'One file could not have more than 200 inputs 'One file could not have more than 200 inputs'。

    • 可通过在上下游之间通过数据开发加上虚拟节点,减少当前节点的直接上游依赖,虚拟节点配置详情请参见:虚拟节点