DataWorks为您提供循环节点(do-while节点),您可以重新编排do-while节点内部的业务流程,将需要循环执行的逻辑写在节点内,再编辑end循环判断节点来控制是否退出循环。同时您也可以结合赋值节点来循环遍历赋值节点传递的结果集。本文通过实现简单和复杂场景的示例,为您介绍如何配置do-while节点。
前提条件
- 已了解循环节点内部可根据业务需要自定义待循环的业务流程。节点组成与流程编排。
- 已了解循环节点内部可通过变量获取循环相关参数。详情请参见内置变量。
- 已了解循环节点的内部节点中start节点代表循环开始,end节点用于自行定义循环退出逻辑。详情请参见退出循环示例:end节点代码样例。
- 已了解循环节点测试与日志查看注意事项。详情请参见注意事项。
使用限制
- 仅DataWorks标准版及以上版本支持使用do-while节点。详情请参见DataWorks各版本详解。
- do-while节点循环次数上限为128次。
- 不支持并发执行。即上次循环完成后才可进入下一次循环。
创建do-while节点
- 进入数据开发。
- 创建do-while节点。
应用示例
本节为您介绍如何使用循环节点循环5次,并在每次循环中打印出当前的循环次数的端到端操作步骤。

自定义do-while节点内部业务流程
根据业务背景自定义do-while节点内部业务流程,将中间节点从sql更新为shell。
编辑节点业务代码
定义退出循环条件
定义当循环第5次时退出循环。提交do-while节点
重要 您需要设置节点的重跑属性和依赖的上游节点,才可以提交节点。
测试并查看执行日志
do-while节点提交发布流程与普通节点一致,线上执行流程与普通节点一致,但不支持数据开发界面测试。说明 DataWorks为标准模式时,不支持在DataStudio界面直接测试运行do-while节点。
如果您想测试验证do-while节点的运行结果,您需要将包含do-while节点的任务发布提交到运维中心,在运维中心页面运行do-while节点任务。如果您在do-while节点内使用了赋值节点传递的值,请在运维中心测试时,同时运行赋值节点和循环节点。
总结
- do-while与while、for-each和do-while三种循环类型对比如下:
- do-while能够实现先循环再判断的循环体,即do…while语句,能够通过系统的变量dag.offset结合节点上下文间接实现foreach语句。
- do-while不能实现先判断再循环的方式,即while语句。
- do-while运行流程:
- 从start开始按任务依赖关系依次运行循环体中的任务。
- 运行用户在end节点中定义的代码。
- 如果end节点输出True,则继续下一个循环。
- 如果end节点输出False,则终止循环。
- 如何使用上下文依赖:do-while的内部节点可以通过${dag.上下文变量名}的方式引用到do-while节点定义的节点上下文。
- 系统参数:DataWorks会为do-while内部节点自动下发两个系统变量。
- dag.loopTimes:从1开始标识这一次循环的次数。
- dag.offset:从0开始标识该次循环相对于第一次循环的次数偏移量。