版本说明编辑
FineDataLink 版本 | 功能变动 |
---|---|
4.0.3.1 | 新增「循环容器」节点,满足多个节点循环执行的场景 |
前提条件编辑
若想使用「循环容器」功能,需注册「循环容器」功能点。详情请参见:FineDataLink注册授权
应用场景编辑
用户使用「数据同步节点」 SQL 取数,数据量非常大的时候,想根据某个条件,进行分段取数,如下图所示:
例如想要将数据表「S产品」根据「类别ID」字段分批同步到新的数据库中,同时同步的数据都满足「类别ID」小于3。
用户使用 RestAPI 数据源 取数, API 数据源的参数来自数据库内的一列字段内,但是 API 参数每次只能读取一个参数值,所以需要参数赋值支持将参数值逐行输出,下游节点通过数据同步对参数值进行遍历。
功能说明编辑
「循环容器」节点可满足循环遍历的场景,且需要与参数赋值节点联合使用,将参数赋值节点作为上游节点,将参数赋值节点的输出结果赋值给循环容器节点后,一次次循环来遍历赋值节点的输出结果。
循环包括两种:
遍历循环:遍历完跳出循环执行。
条件循环:达到条件后跳出循环执行。
循环容器节点说明
新增「循环容器」节点,界面如下图所示:
右键「循环容器」节点,界面如下图所示:
注:循环容器内不可拖入的节点类型:循环容器、调用任务
「循环容器」节点设置项介绍如下表所示:
设置项 | 说明 |
---|---|
循环限制 | 默认 128 次,用户可手动调整,上限为 10000 次,不可为空 超出循环限制后,循环容器运行将报错 |
循环方式-遍历循环 | 遍历参数输出的结果,循环次数由字段值的个数决定
|
循环方式-条件循环 | 可设置「结束条件」,整体逻辑是先执行一次循环体,再判断条件,循环次数由条件决定
|
遍历对象 | 可勾选参数:选择的参数逐行获取值,未选择的参数直接获取值 可以选择单个或多个参数,限制只能选择容器外的参数 |
结束条件 | 循环方式选择「条件循环」时,可设置「结束条件」。 条件中的参数可以是容器外的参数,也可以是容器内的参数 |
参数赋值节点功能调整
1)调整对象:参数赋值的参数,输出多个值时,格式:{a,b,c,d,e}
调整前逻辑 | 调整后逻辑 |
---|---|
作为字符串输出 |
|
2)增加参数赋值输出参数的值个数限制
对「参数赋值」中单个参数输出的字段值个数进行限制,限制最多不能超过 10000 个。
容器内参数
1)新增容器内置变量:
内置参数 | 生效范围 | 定义 |
---|---|---|
${loopTimes} | 循环容器内部 | 容器内当前循环次数,初次为 1 ,后续每次循环递增加 1 |
内置参数使用请参见:内置参数
2)容器内参数
容器内可以使用「参数赋值」,「参数赋值」输出的值形成容器内的参数:
容器内参数仅可在容器内使用,不可向容器外传递。
容器内参数优先级最高,优先级大于其他所有容器外参数和内置的参数。
日志介绍
任务中若包含循环容器节点,任务运行成功后,日志如下图所示:
日志具体介绍请参见:日志
「统计」Tab 页界面如下图所示:
约束限制编辑
循环容器内不支持的节点类型:循环容器、调用任务
操作步骤编辑
示例:将 xiaoshou 表中的「编号」字段作为参数输出,逐条同步到新的表 xunhuan 中,「编号」为空停止输出。
数据准备
示例数据:xiaoshou.xls
表数据如下图所示:
新增参数赋值节点
1)新建一个 ETL 任务,将「参数赋值」节点拖入到设计界面。「参数赋值」节点具体设置如下图所示:
点击「数据预览」,如下图所示:
2)「输出参数」Tab 页设置如下图所示:
设置循环容器节点
新增循环容器节点和数据同步节点
新增「循环容器」节点,并将「数据同步」节点拖入到「循环容器」中,「循环容器」节点与「参数赋值」节点相连。如下图所示:
设置数据同步节点
1)点击「数据同步」节点。具体设置如下图所示:
SQL 语句为:select * from xiaoshou where 编号 =${aa}
2)点击「数据去向」Tab 。设置界面如下图所示:
设置循环容器节点
点击循环容器节点,循环方式选择「条件循环」,结束条件设置为aa字符串不包含null。如下图所示:
运行任务
点击右上角的「保存并运行」。如下图所示:
运行成功后,可看到数据库 etlwendy 中新增了一张表 xunhuan。如下图所示: