调度依赖场景规则与示例

Dataphin支持将周期任务的调度周期设置为分钟、小时、日、周、月调度类型中的其中一种,不同调度类型,任务执行的周期不同;同时各调度类型的周期任务支持互相依赖。例如,小时任务天任务或小时任务依赖周任务。本文为您介绍各任务间依赖策略说明。

背景信息

配置调度依赖前,建议您需先了解以下内容。

  • Dataphin中,周期任务会根据调度周期生成相应的周期实例(例如,小时调度任务每天会根据调度周期生成相应数量的小时实例),并通过实例的方式运行任务。周期任务之间所设置的调度依赖,其本质是任务间所生成实例的依赖。上下游任务的调度周期不同,其生成的实例之间依赖情况不同。

  • Dataphin支持多种调度依赖场景,不同场景的调度任务,支持依赖根节点本节点上周期、或其他物理/逻辑表节点

  • 实例开始运行条件。

    依赖的上游实例全部运行成功,即运行节点变成等待调度时间等待调度资源状态。当实例到达当前实例的定时运行时间且已分配调度资源、系统未限流时,运行节点将变成运行中状态,执行节点任务。如果实例为触发式节点还需要已接收到外部触发请求。

  • 上游被依赖实例未完成时,下游实例达到定时运行时间,将不会正常起调。需要等待上游被依赖实例正常完成,下游实例才可以正常运行,即定时运行时间为计划时间,非实际执行时间

  • 周期任务每晚23点会自动生成次日需要运行的周期实例,当任务的调度周期不存在实际需要运行的实例任务时,系统将默认生成空跑实例,并直接置为成功。例如,月调度任务调度周期为每月2号的13:00:00,除每月的2号外,系统每天都将默认生成空跑实例,并置为成功。

通用说明

配置调度依赖时,可在编辑依赖对话框的节点依赖周期预览区域中进行预览。详情请参见配置离线任务调度依赖

节点依赖周预览中,各区块及其说明如下。

image

区块

说明

当前节点的实例列表,可单击列表中的实例来切换选中实例,被选中的实例将以蓝色进行高亮显示。

所选上游节点的实例列表,其中被当前节点所选中实例所依赖的实例,将以蓝色进行高亮显示。

右侧选中实例依赖左侧实例的连线。

依赖场景

不同周期任务的细分依赖场景及其规则如下。

说明

下游任务的定时运行时间若早于上游任务,即便到达下游任务的定时时间,该任务也不会调度,需等待上游任务运行完成后才会调度运行。

任务依赖根节点

将根节点作为当前任务的上游依赖时,不支持配置依赖周期和依赖策略。根节点将被系统默认为已经成功运行的节点,当业务时间到达任务的定时运行时间且系统已分配调度资源时,任务将会正常运行,根节点不会阻塞下游节点。

任务依赖本节点上周期/物理/逻辑表节点

任务依赖本节点上周期/物理/逻辑表节点时,支持配置依赖周期和依赖策略。

  • 依赖周期:包括本周期(当日)上周期(前一日)前N日最近24小时

    说明

    本节点上周期不支持依赖本周期(当日),即不支持本节点同周期依赖

  • 依赖策略:包括全部实例第一个实例最后一个实例最近一个实例。以下案例以比较典型的小时调度任务依赖小时任务为例,为您说明不同依赖策略的执行逻辑。

依赖周期

依赖策略

本周期(当日)

以本周期(当日)为依赖周期时,不同的依赖策略依赖的实例详情如下:

  • 全部实例

    全部实例时,需要本周期(当日)依赖任务的所有实例均成功运行,依赖的后续节点才可以正常运行。例如,当天的业务日期为2024-03-02,本周期(当日)依赖任务即为2024-03-02。当前任务实例节点的运行依赖2024-03-02依赖节点的所有实例。2024-03-02所有依赖实例运行成功,则当前任务2024-03-02实例节点均可以正常运行;2024-03-02依赖节点存在一个实例未成功运行,当前任务2024-03-02实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。image

  • 第一个实例

    第一个实例时,只要本周期(当日)依赖任务的第一个实例成功运行,依赖的后续节点都可以正常运行。例如,当天的业务日期为2024-03-02,本周期(当日)即为2024-03-02。当前任务2024-03-02的实例节点运行依赖2024-03-02依赖节点的第一个实例。2024-03-02依赖节点第一个实例运行成功,当前任务2024-03-02实例节点均可以正常运行;2024-03-02依赖节点第一个实例未成功运行,当前任务2024-03-02实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

  • 最后一个实例

    最后一个实例时,只要本周期(当日)依赖任务的最后一个实例成功运行,依赖的后续节点都可以正常运行。例如,当天的业务日期为2024-03-02,本周期(当日)即为2024-03-02。当前任务2024-03-02的实例节点运行依赖2024-03-02依赖节点的最后一个实例。2024-03-02依赖节点最后一个实例运行成功,当前任务2024-03-02实例节点均可以正常运行;2024-03-02依赖节点最后一个实例未成功运行,当前任务2024-03-02实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。image

  • 最近一个实例

    最近一个实例时,实例的运行,取决于本周期(当日)距离当前实例调度时间之后的(包括等于实例调度时间)最近一个依赖实例是否成功运行。例如,当天的业务日期为2024-03-02,本周期(当日)即为2024-03-02。则当前2024-03-02调度时间为13:05:00的任务实例节点之后的最近一个依赖实例节点则是2024-03-02调度时间为14:00:00的实例,即当前任务2024-03-0213:05:00实例节点依赖本周期(当日)依赖节点14:00:00的实例,其他节点以此类推。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

上周期(前一日)

以上周期(前一日)为依赖周期时,不同的依赖策略依赖的实例详情如下:

  • 全部实例

    全部实例时,需要上周期(前一日)的所有实例均成功运行,依赖的后续节点才可以正常运行。例如,当天的业务日期为2024-03-02,上周期(前一日)即为2024-03-012024-03-02的实例节点运行依赖2024-03-01的所有实例。2024-03-01所有实例运行成功,2024-03-02实例节点均可以正常运行;2024-03-01存在一个实例未成功运行,2024-03-02实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

  • 第一个实例

    第一个实例时,只要上周期(前一日)的第一个实例成功运行,依赖的后续节点都可以正常运行。例如,当天的业务日期为2024-03-02,上周期(前一日)即为2024-03-012024-03-02的实例节点运行依赖2024-03-01的第一个实例。2024-03-01第一个实例运行成功,2024-03-02实例节点均可以正常运行;2024-03-01第一个实例未成功运行,2024-03-02实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

  • 最后一个实例

    最后一个实例时,只要上周期(前一日)的最后一个实例成功运行,依赖的后续节点都可以正常运行。例如,当天的业务日期为2024-03-02,上周期(前一日)即为2024-03-012024-03-02的实例节点运行依赖2024-03-01的最后一个实例。2024-03-01最后一个实例运行成功,2024-03-02实例节点均可以正常运行;2024-03-01最后一个实例未成功运行,2024-03-02实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。image

  • 最近一个实例

    最近一个实例时,实例的运行,取决于上周期(前一日)距离当前实例调度时间之后的(包括等于实例调度时间)最近一个依赖实例是否成功运行。例如,当天的业务日期为2024-03-02,上周期(前一日)即为2024-03-01。则当前2024-03-02调度时间为13:00:00的任务实例节点之后的最近一个依赖实例节点则是2024-03-01调度时间为13:00:00的实例,即当前任务2024-03-0213:00:00实例节点依赖上周期(前一日)依赖节点13:00:00的实例,其他节点以此类推。

    配置调度依赖时,节点依赖周期预览示例如下。image

前N日

以前N日为依赖周期时,不同依赖策略的执行逻辑不同。以下案例以易于理解的前2日为例,为您说明不同的依赖策略依赖的实例,详情如下:

  • 全部实例

    全部实例时,需要前2日的所有实例均成功运行,依赖的后续节点才可以正常运行。例如,当天的业务日期为2024-03-04,前2日即为2024-03-022024-03-04的实例节点运行依赖2024-03-02的所有实例。2024-03-02所有实例运行成功,2024-03-04实例节点均可以正常运行;2024-03-02存在一个实例未成功运行,2024-03-04实例节点均不可以正常运行。其他节点以此类推。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

  • 第一个实例

    第一个实例时,只要前2日的第一个实例成功运行,依赖的后续节点都可以正常运行。例如,当天的业务日期为2024-03-04,前2日即为2024-03-022024-03-04的实例节点运行依赖2024-03-02的第一个实例。2024-03-02第一个实例运行成功,2024-03-04实例节点均可以正常运行;2024-03-02第一个实例未成功运行,2024-03-04实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。image

  • 最后一个实例

    最后一个实例时,只要前2日的最后一个实例成功运行,依赖的后续节点都可以正常运行。例如,当天的业务日期为2024-03-04,前2日即为2024-03-022024-03-04的实例节点运行依赖2024-03-02的最后一个实例。2024-03-02最后一个实例运行成功,2024-03-04实例节点均可以正常运行;2024-03-02最后一个实例未成功运行,2024-03-04实例节点均不可以正常运行。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

  • 最近一个实例

    最近一个实例时,实例的运行,取决于前N日距离当前实例调度时间之后的(包括等于实例调度时间)最近一个依赖实例是否成功运行。例如,依赖前2日实例,且当天的业务日期为2024-03-04,前2日即为2024-03-02。则当前2024-03-04调度时间为13:00:00的任务实例节点之后的最近一个依赖实例节点则是2024-03-02调度时间为13:00:00的实例,即当前任务2024-03-0413:00:00实例节点依赖前2日依赖节点13:00:00的实例,其他节点以此类推。

    配置调度依赖时,节点依赖周期预览示例如下。

    image

最近24小时

以最近24小时为依赖周期时,不同的依赖策略依赖的实例详情如下:

  • 全部实例

    全部实例时,需要距离当前运行节点24小时内(最近24小时)的所有依赖实例均成功运行,当前运行节点才可以正常运行。例如,当天的业务日期为2024-03-04,距离13:00:00实例24小时内的依赖实例包括2024-03-0313:00:0014:00:0015:00:00;距离14:00:00实例24小时内的依赖实例包括2024-03-0314:00:0015:00:00

    配置调度依赖时,节点依赖周期预览示例如下。

    image

  • 第一个实例

    第一个实例时,需要距离当前运行节点24小时内(最近24小时)的第一个依赖实例成功运行,当前运行节点才可以正常运行。例如,当天的业务日期为2024-03-04,距离13:00:00实例24小时内的依赖实例包括2024-03-0313:00:0014:00:0015:00:00,在此范围内的第一个实例为13:00:00;距离14:00:00实例24小时内的依赖实例包括2024-03-0314:00:0015:00:00,在此范围内的第一个实例为14:00:00

    配置调度依赖时,节点依赖周期预览示例如下。image

  • 最后一个实例

    最后一个实例时,需要距离当前运行节点24小时内(最近24小时)的最后一个依赖实例成功运行,当前运行节点才可以正常运行。例如,当天的业务日期为2024-03-04,当前调度实例的时间为13:00:00,则实例24小时内的依赖实例的取值范围为[2024-03-03 13:00 ~ 2024-03-04 13:00 )

    配置调度依赖时,节点依赖周期预览示例如下。image

  • 最近一个实例

    最近一个实例时,实例的运行,取决于当前实例调度时间前24小时内且距离当前实例调度时间之后的(从T-1当前实例调度时间开始,到当前实例调度时间前一秒结束最近一个依赖实例是否成功运行。例如,当天的业务日期为2024-03-04,当前实例调度时间为2024-03-04 13:00,则最近一个实例的取值范围为[2024-03-03 13:00 ~ 2024-03-04 13:00 )

    配置调度依赖时,节点依赖周期预览示例如下。

    image