1. 概述编辑
1.1 版本说明
报表服务器版本 | ETL版本 | 功能变动 |
---|---|---|
11.0 | 3.2 | 新增节点「调用任务」,可以在当前任务中调用执行其他任务 |
1.2 应用场景
节点「调用任务」可以在当前任务中调用其他任务,这样可以直接设置任务间执行的依赖关系,实现跨任务编排。
1.3 功能简介
配置「调用任务」节点时,共有两个设置项:
调用任务:下拉框选择其他ETL任务,自身和没管理权限的任务不可选。
参数传递:默认不勾选,勾选后当前任务定义的参数(参数设置里的参数)或参数赋值节点的参数可以传递给子任务(被调用的任务)使用。
注1:勾选了参数传递,任务定义的参数,子任务可以直接使用,但参数赋值节点的参数只能被子任务的首个节点使用。
注2:参数传递不支持跨层级,仅可传递给子任务,不可传递给孙任务。
2. 示例编辑
我们创建2个ETL任务,任务1和任务2,任务1中使用【调用任务】节点来调用任务2,并且通过数据同步节点使用任务2中生成的结果数据进行二次加工,获得最终需要的分析数据。
2.1 创建被调用任务
1)创建一个 ETL 任务,重命名为任务2,并将一个「数据同步」节点拖到设计界面,设置节点的数据来源,SQL 语句取出 sales 表中所有的数据,如下图所示:
2)设置数据去向,将 sales 表中的数据同步到另一个数据库的表 salecopy 中,字段映射采用默认设置即可,如下图所示:
3)保存这个任务即可。
2.2 创建执行调用的任务
1)创建一个 ETL 任务,重命名为任务1,并将一个「调用任务」节点拖到设计界面,调用任务选择上面刚建好的任务2,任务2没设置参数,所以参数传递保持默认不勾选即可。
2)将一个「数据同步」节点拖到设计界面,设置数据来源,SQL 语句对任务2生成的salecopy 表的数据进行处理,统计出每个城市的销售总和,如下图所示:
3)如下图设置数据去向,使用自动建表将上面处理的数据保存到另一张表 staticsale 中去,字段映射采用默认设置即可。
4)使用线条将「数据同步」节点跟它的上游「调用任务」节点连起来;实际生产环境中,此时需要设置任务1的调度配置,
注意事项:由于当前案例中,任务2是被任务1调用的任务,所以任务2不需要设置调度配置,但是任务1需要设置调度配置,任务1每次执行会顺便拉起任务2的执行。
2.3 运行任务
1)点击右上角「保存并运行」,保存运行该任务,日志处出现执行成功信息表示任务成功运行,如下图所示:
2)可以看到数据库中多了一张任务1数据同步节点生成的结果表 staticsale,城市销售总和数据已经存到该表中。
3. 注意事项编辑
3.1 参数名冲突
子任务里参数可能会跟父任务传递过来的参数产生同名冲突的情况,当参数名重复时子任务各参数优先级如下:
参数赋值 > 任务参数 > 父任务的参数赋值 > 父任务的任务参数 > 系统参数
3.2 任务调度冲突
父任务和子任务都设置了调度,如果父任务执行时,子任务正在运行,此时父任务触发子任务,则会进入排队等待状态。