历史版本22 :循环容器逻辑说明 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

[helpvideo]3432[/helpvideo]

1.1 版本说明

FineDataLink 版本功能变动
4.0.3.1
新增「循环容器」节点,满足多个节点循环执行的场景

1.2 前提条件

若想使用「循环容器」功能,需注册「循环容器」功能点。详情请参见:FineDataLink注册授权

1.3 应用场景

用户使用 API 数据源 取数, API 数据源的参数来自数据库内的一列字段内,但是 API 参数每次只能读取一个参数值,所以需要参数赋值支持将参数值逐行输出,下游节点通过数据同步对参数值进行遍历。

注:循环容器内不支持的节点类型:循环容器、调用任务

2. 功能说明编辑

「循环容器」节点可满足循环遍历的场景,且需要与参数赋值节点联合使用,将参数赋值节点作为上游节点,将参数赋值节点的输出结果赋值给循环容器节点后,一次次循环来遍历赋值节点的输出结果。

循环包括两种:

  • 遍历循环:遍历完跳出循环执行。

  • 条件循环:不满足条件时跳出循环执行。

3. 示例编辑

demo示例详情参见:https://demo.finedatalink.com/ 中任务:循环容器API

示例:API 接口每次只能取一条数据,希望能将接口中满足数据库表「orderlist」中data_id 的数据取出并落库。

此时需要将「orderlist」数据库表中 data_id 取出作为参数,然后将该参数写入API请求中,通过循环容器一一将参数值赋给API,一条条取出数据到指定数据库。

数据库数据:orderlist.xlsx

接口数据:https://api.jiandaoyun.com/api/v4/app/62e9e1c00a99380008a3ccd2/entry/6315aef0ee89a400086fcc54/data_retrieve

3.1 设置参数

1)新建一个 ETL 任务,将「参数赋值」节点拖入到设计界面。取出「orderlist」数据库表中 data_id 数据,如下图所示:

点击「数据预览」,如下图所示:

2)将 data_id 设置为参数,如下图所示:

注1:若参数作为循环参数,那么参数值在遍历时是一维数组的形式,可供容器循环获取,若参数赋值的参数在其他场景中使用,还是字符串的形式。

注2:对「参数赋值」中单个参数输出的字段值个数进行限制,限制最多不能超过 10000 个。

注3:新增容器内置参数${loopTimes},在循环容器内部生效,容器内当前循环次数,初次为 1 ,后续每次循环递增加。内置参数使用请参见:内置参数

注4:容器内可以使用「参数赋值」,「参数赋值」输出的值形成容器内的参数:

  • 容器内参数仅可在容器内使用,不可向容器外传递。

  • 容器内参数优先级最高,优先级大于其他所有容器外参数和内置的参数。

3.2 引入循环容器

由于数据同步-API取数需要将参数一条条赋值给接口,因此新增「循环容器」节点,将「循环容器」节点与「参数赋值」节点相连,如下图所示:

3.3 API 取数并落库

为了将 API 接口中的数据取出,需要将「数据同步」节点拖入到「循环容器」中,并输入 API、请求方式、认证类型,API 取数详情参见:数据同步-API,如下图所示:

设置请求头为 JSON格式,并将参数赋值中设置的 dataid 参数写入请求参数中,如下图所示:

由于取出的 API 数据返回的是JSON 格式,因此可以通过「返回值处理」取出想要的数据,然后点击「数据预览」查看取出数据,如下图所示:

点击「数据去向」设置取出的数据的写入数据表,如下图所示:

3.4 参数绑定循环容器

设置循环遍历对象,选择 3.1节设置的 dataid 参数,在数据同步 API 取数时,循环容器会一一将参数值赋给接口请求参数,如下图所示:

「循环容器」节点设置项介绍如下表所示:

设置项说明
循环限制

默认 128 次,用户可手动调整,上限为 10000 次,不可为空

超出循环限制后,循环容器运行将报错

循环方式-遍历循环

遍历参数输出的结果,循环次数由字段值的个数决定

  • 当遍历值不为空时,继续下一次循环;

  • 当遍历值为空时,结束容器内的循环。

循环方式-条件循环

可设置「结束条件」,整体逻辑是先执行一次循环体,再判断条件,循环次数由条件决定

  • 当条件判断返回值为true时,继续下一次循环;

  • 当条件判断返回值为false时,结束容器内的循环。

遍历对象

可勾选参数:选择的参数逐行获取值,未选择的参数直接获取值

可以选择单个或多个参数,限制只能选择容器外的参数

结束条件

循环方式选择「条件循环」时,可设置「结束条件」。

条件中的参数可以是容器外的参数,也可以是容器内的参数

3.5 运行任务

点击右上角的「保存并运行」。如下图所示:

运行成功后,可看到数据库中新增了数据表,将数据库表「orderlist」中 data_id 对应的 API 数据取出。如下图所示: