For-each任务主要用于有循环遍历的场景,需要与上游有输出参数的任务(SQL、Python、Shell)联合使用。将带有输出任务的上游作为for-each任务的上游任务,并将其输出结果赋值给for-each任务后,一次次循环来遍历赋值任务的输出结果。

本文为您介绍For each循环任务的组成与应用逻辑。

运行原理

  1. 支持输出参数的特殊任务:For each循环任务必须要绑定一个有输出参数的上游任务,当前系统支持SQL、Python、Shell三种类型的任务任务可配置「输出参数」。
  2. LoopArray参数:在For each任务上配置的,用以绑定上游数据,并通过获取上游数据的结果决定在For each任务上的循环次数。以及For each内部任务中替换的具体的值。
  3. 子任务引用:若For each内部任务需要引用上游任务的值,则可以通过内置参数获取LoopArray绑定的上游的值。

操作步骤

准备上游数据(配置Python任务)

新建一个Python任务,并为其配置「输出参数」

print (1,'abc',2,'djg');

配置For each循环任务

1、配置For each输入参数

点击「调度」->「循环信息」->「输入参数」,绑定LoopArray参数,该参数主要用以接收上游参数的值以及数据集。

loopArray的取值,是通过绑定上游节点的输出参数来决定的。同时也可以通过选择其他配置输出参数的任务后,默认建立两个节点间的依赖关系。

2、循环策略

  • 串行:按照循环次数,顺序运行。
  • 并行:可并发运行For-each内部循环,提升任务的执行效率。并行时,如果出现其中某个循环体失败的场景,可通过配置「循环出现失败」的处理方式决定后续的循环是直接置为失败还是继续执行。

3、最大循环次数:默认为128次,最大可调至1024次

4、循环出现失败:当一个For each实例中,其中某个循环体出现失败后,后续的循环的执行策略。

  • 停止全部运行:当一个循环体失败后,后续所有未运行的循环体默认置为失败。整个For each实例执行失败。
  • 继续后续运行:当一个循环体失败后,后续未运行的循环体不受影响,正常执行调度,直到所有循环执行结束。

5、上游输出参数为空:当上游输出参数为空时当前For each循环如何处理

  • 置成功:当前For each循环直接作为成功状态处理,不进行实际的运行。
  • 置失败:当前For each循环直接作为失败状态处理。

配置For each内部子任务

在For each任务内部,新建一个SQL节点。

在脚本区域输入${aa}后,在【参数】中对该自定义参数进行配置后,则在实际运行中,可进行参数值的替换。

临时运行

For each循环支持临时运行时,输入loopArray的值去进行测试验证。格式仅支持:一维数组用英文,进行区分;二维数组用[[],[]]的方式。例如[["1","abc"], ["12","abc2"]]

For each循环内置参数

参数名称含义示例
dag_foreach_current()获取当前循环正在处理的数据项一共循环4次,* 第一次的输出值是1
* 第二次是2
* 第三次是3
* 第四次是4
dag_loopArray()获取上游赋值任务传入的完整结果集一共循环4次,* 第一次的输出值是1,2,3,4
* 第二次的输出值是1,2,3,4
* 第三次的输出值是1,2,3,4
* 第四次的输出值是1,2,3,4 ,
dag_loopTimes()获取当前是第几次循环,从 1 开始一共循环4次,* 第一次的输出值是1
* 第二次的输出值是2
* 第三次的输出值是3
* 第四次的输出值是4
dag_offset()获取当前循环的偏移量,从 0 开始。一共循环4次,* 第一次的输出值是0
* 第二次的输出值是1
* 第三次的输出值是2
* 第四次的输出值是3

联系我们
预约咨询
微信咨询
电话咨询