DataWorks为您提供遍历节点(for-each节点),您可以通过for-each节点来循环遍历赋值节点传递的结果集。同时您也可以重新编排for-each节点内部的业务流程。本文以一个具体示例,通过for-each节点2次循环遍历赋值节点输出结果,并在每次循环遍历时打印当前循环次数,为您介绍for-each节点的逻辑原理与操作流程。
前提条件
在配置节点前,请先了解相关介绍,避免任务配置过程出错。详情请参见for-each节点逻辑原理介绍。
操作流程
使用遍历节点时,通常与赋值节点一起使用,操作流程如下所示。
设置节点依赖关系
for-each遍历节点需要依赖赋值节点。配置详情可参考文档:创建和配置业务流程。
赋值结果集
赋值节点自带的节点上下文输出参数outputs,需作为for-each遍历节点的节点上下文输入参数。配置详情可参考文档:配置赋值节点。
遍历节点的内部节点获取参数
根据业务需求自定义for-each遍历节点的内部业务流程,并在内部流程的节点中通过内置变量来获取所需参数值,运行循环遍历任务。内置变量的详情请参见内置变量,配置详情请参见配置for-each节点。
遍历节点不支持在DataStudio测试
创建和配置业务流程
您需要创建一个上游为赋值节点,下游为for-each节点的业务流程:
进入数据开发页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
创建for-each节点。
鼠标悬停至图标,单击
。您也可以找到相应的业务流程,右键单击通用,选择
。在新建节点对话框中,输入节点名称、路径等信息。
单击确认。
创建赋值节点。
双击业务流程,进入业务流程的编辑页面,单击+新建节点,将
拖拽至右侧的编辑区域。赋值节点的介绍请参见赋值节点。
在新建节点对话框中,输入节点名称、路径(默认在当前业务流程目录下)。
单击确认。
通过拖拽连线,设置赋值节点为for-each节点的上游节点。
配置赋值节点
双击赋值节点名称,进入节点的编辑页面。
从请选择赋值语言列表中,选中SHELL。
在节点编辑页面,输入以下语句。
echo 'this is name,ok';
单击节点编辑页面右侧的调度配置,在
区域查看默认输出的outputs参数。单击工具栏中的图标,保存赋值节点。
单击工具栏中的图标,提交赋值节点。
提交时需在提交对话框中输入变更描述,并根据需要选择是否在节点提交后执行代码评审。
重要您需要设置节点的重跑属性和依赖的上游节点,才可以提交节点。
代码评审可对任务的代码质量进行把控,防止由于任务代码有误,未经审核直接发布上线后出现任务报错。如进行代码评审,则提交的节点代码必须通过评审人员的审核才可发布,详情请参见代码评审。
如您使用的是标准模式的工作空间,任务提交成功后,需单击节点编辑页面右上方的发布,将该任务发布至生产环境执行,操作请参见发布任务。
配置for-each节点
双击for-each节点,进入节点编辑页面,默认包含start、shell和end三个节点。
您可根据需求,替换Shell节点为其他节点:
如需使用Shell节点,则直接配置Shell节点即可。
如果您需要使用其它类型的节点,请先删除默认的Shell节点,再创建其他类型节点。
本文示例使用Shell节点。
编辑Shell节点。
双击Shell节点,进入节点编辑页面。
输入以下代码。
配置for-each节点。
在for-each节点的编辑页面,单击右侧的调度配置。
在
区域,单击默认参数名loopDataArray后的编辑。从取值来源列表中,选择上游赋值节点的outputs参数,单击保存。
说明您在调度配置中添加上游赋值节点的依赖关系后,请手动添加取值来源。如果未添加取值来源,提交节点时会报错。
单击工具栏的图标,保存for-each节点。
单击工具栏的图标,提交for-each节点。
重要您需要设置节点的重跑属性和依赖的上游节点,才可以提交节点。
在提交对话框中,选中需要提交的节点,单击确定。
如果您使用的是标准模式的工作空间,提交成功后,请单击右上方的发布。具体操作请参见发布任务。
测试并查看测试结果
单击页面右上方的运维,进入运维中心。
在左侧导航栏,单击
。选中相应的节点,在右侧的DAG图中,右键单击赋值节点,选中
。刷新补数据实例页面,待补数据实例运行成功后,单击实例后的DAG图。
右键单击赋值节点,选中查看运行日志,确认赋值结果。
在补数据实例页面,右键单击遍历节点,选中查看内部节点。
在内部节点页面,单击左侧的第1次,并右键单击Shell节点,选中查看运行日志。
在运行日志页面,查看第1次循环时,Shell节点的日志。
以同样的方式,查看第2次循环时,Shell节点的日志。