历史版本9 :调用任务 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

[helpvideo]3260[/helpvideo]

1.1 版本说明

FineDataLink 版本功能变动
3.2
新增节点「调用任务」,可以在当前任务中调用执行其他任务,参数传递不支持跨层级,仅可传递给子任务,不可传递给孙任务
3.7.1
可实现参数跨层级传递

1.2 应用场景

用户希望可以在当前任务中调用其他任务,直接设置任务间执行的依赖关系,「调用任务」节点可满足该需求。

1.3 功能简介

「调用任务」节点可调用其他任务,完成跨任务的编排。

2. 功能介绍编辑

「调用任务」节点界面如下图所示:

0.png

2.1 3.7.1 之前版本

设置项介绍如下表所示:

设置项说明
调用任务下拉框选择其他 ETL 任务,自身和没管理权限的任务不可选
参数传递

默认不勾选,如果勾选了将当前任务的参数传递给子任务,那么定义的任务参数、参数赋值输出的参数都可以传递给子任务使用

其他说明:

  • 勾选了参数传递,任务定义的参数,子任务可以直接使用,但参数赋值节点的参数只能被子任务的首个节点使用

  • 参数传递不支持跨层级,仅可传递给子任务,不可传递给孙任务

2.2 3.7.1 及之后版本

设置项介绍如下表所示:

设置项说明
调用任务下拉框选择其他 ETL 任务,自身和没管理权限的任务不可选
参数传递

默认不勾选,如果勾选了将当前任务的参数传递给子任务,那么定义的任务参数、参数赋值输出的参数都可以传递给子任务使用

注:支持参数跨层级传递

勾选后,界面如下图所示:

3.png

参数赋值:仅所在的分支上游「参数赋值」输出的参数。参数赋值节点的参数可以被下游分支所有的节点使用,但是不可跨分支被其他节点使用

任务参数:所有任务参数都可以选择传递给子任务

跨层级传递逻辑说明:

在选择参数传递给子任务时,只能选择本任务内已经定义好的参数,所以在超过两个层级的场景下:子任务想要用到父父任务里的参数,需要上层的两级任务均有同名参数,且都配置了传递给子任务

示例:若任务 c 里有一个参数 p1 ,如果任务 a 也想用,那么任务 b 里也要有一个参数 p1 ,然后在任务 c 和任务 b 里都配置参数 p1 向子任务传递:

1649903122966190.png

3. 示例编辑

我们创建2个ETL任务,父renwu和子renwu,父renwu中使用【调用任务】节点来调用子renwu,并且通过数据同步节点使用子renwu中生成的结果数据进行二次加工,获得最终需要的分析数据。

3.1 创建被调用任务

1)创建一个 ETL 任务,重命名为子renwu,并将一个数据同步节点拖到设计界面,设置节点的数据来源,SQL 语句取出 sales 表中所有的数据,如下图所示:

示例表数据:sales.xlsx

1.png

2)设置数据去向,将 sales 表中的数据同步到另一个数据库的表 salescopy 中,字段映射采用默认设置即可,如下图所示:

2.png

3)保存并运行这个任务即可。

3.png

3.2 创建执行调用的任务

1)创建一个 ETL 任务,重命名为父renwu,并将一个「调用任务节点拖到设计界面,调用任务选择上面刚建好的子renwu,子renwu没设置参数,所以参数传递保持默认不勾选即可。

4.png

2)将一个数据同步节点拖到设计界面,设置数据来源,SQL 语句对子renwu生成的salescopy 表的数据进行处理,统计出每个城市的销售总和,如下图所示:

5.png

3)如下图设置数据去向,使用自动建表将上面处理的数据保存到另一张表 staticsale 中去,字段映射采用默认设置即可。

6.png

4)使用线条将数据同步节点跟它的上游调用任务节点连起来;实际生产环境中,此时需要设置父renwu的调度配置,

注意事项:由于当前案例中,子renwu是被父renwu调用的任务,所以子renwu不需要设置调度配置,但是父renwu需要设置调度配置,父renwu每次执行会顺便拉起子renwu的执行。

7.png

3.3 运行任务

1)点击右上角保存并运行,保存运行该任务,日志处出现执行成功信息表示任务成功运行,如下图所示:

8.png

2)可以看到数据库中多了一张父renwu数据同步节点生成的结果表 staticsale,城市销售总和数据已经存到该表中。

9.png

4. 注意事项编辑

4.1 参数名冲突

子任务里参数可能会跟父任务传递过来的参数产生同名冲突的情况,当参数名重复时子任务各参数优先级如下:

1)3.7.1 之前版本

参数赋值 > 任务参数 > 父任务的参数赋值 > 父任务的任务参数 > 系统参数

2)3.7.1 及之后版本

参数赋值>父任务的参数赋值>父任务的任务参数>任务参数>系统参数

4.2 任务调度冲突

父任务和子任务都设置了调度,如果父任务执行时,子任务正在运行,此时父任务触发子任务,则会进入排队等待状态。