本文将为您介绍如何通过for-each节点实现循环2次,每次循环中把当前的循环次数打印出来的需求。

说明
  • 您需要购买DataWorks标准版及以上版本,才可以使用for-each节点功能。
  • for-each节点最多可以循环128次,一旦超过便会报错。
  • 若for-each节点内部需要进行逻辑判断进行结果遍历可使用分支节点,需要注意的是,在遍历节点内部,分支节点需要和归并节点同时使用

新建for-each

  1. 登录DataWorks控制台,单击相应工作空间后的进入数据开发
  2. 鼠标悬停至新建,单击通用 > for-each

    您也可以打开相应的业务流程,右键单击通用,选择新建 > for-each

  3. 新建节点对话框中,输入节点名称,并选择目标文件夹,单击提交
    说明 节点名称的长度不能超过128个字符。
  4. 创建的业务流程上游为赋值节点,下游为遍历节点。
    上游赋值节点选择的是Shell节点,代码如下。
    echo 'this is name,ok';
    赋值节点默认一个outputs参数。output
说明
  • 遍历节点的start节点和end节点的逻辑是固定的,不可以进行编辑。
  • Shell节点中的代码修改后一定要保存,提交时不会提示您进行保存。如果没有保存,最新的代码不能及时更新。
Shell节点的代码如下所示。
echo ${dag.loopTimes}  ----打印循环的次数。
遍历节点支持以下四种环境变量:
  • ${dag.foreach.current}:当前遍历到的数据行。
  • ${dag.loopDataArray}:输入的数据集。
  • ${dag.offset}:偏移量。
  • ${dag.loopTimes}:当前循环次数,值为${dag.offset}+1。
// 以常见的for循环代码进行类比。
data=[]  // 相当于${dag.loopDataArray}。
// i相当于${dag.offset}。
for(int i=0;i<data.length;i++) {
  print(data[i]);  // data[i]相当于${dag.foreach.current}。
}
遍历节点默认参数名为loopDataArray,取值来源是上游赋值节点的outputs参数,需要手动添加。如果没有添加,提交时会报错。提交报错
提交后发布,进入运维中心页面查看相应结果。运维中心
下图为遍历节点的结果。遍历结果遍历结果循环次数