亿信ABI
当前版本:5.6.1

循环节点组件

1.组件介绍

ETL任务流升级改造为调度平台后,去掉了任务循环功能,在ETL组件得流程组件中新增循环节点组件,实现数据处理的循环和遍历功能。循环节点组件支持对ETL任务中支持现有组件得嵌套。

基本配置:

循环节点组件有四个属性可配置,分别为输入设置、循环设置、输出设置、参数。

其中循环节点的输入设置支持三种方式分别为前置组件结果集、参数(一维数组)、无输入设置。

当输入设置为结果集时,循环节点内自动遍历前置组件结果集,获取当前遍历值中的字段信息,实现多条数据的处理

循环设置支持两种设置方式,分别为循环条件设置和遍历设置。遍历设置即将输入设置中的结果集进行逐一的遍历操作。循环设置选择“循环条件设置”时,支持通过表达式配置跳出循环的条件,表达式中支持参数、函数.在该循环配置下,任务执行时,首先入循环,执行循环节点中的组件,然后再根据表达式结果,为true时继续执行循环,为false时结束循环。

如果设置为遍历设置,结果集字段列表中,必须有字段指定了排序规则.

注意:

1. 选择“循环条件设置”时,为了避免无限循环,需要配置“循环次数上限”,支持配置为常量或者参数,当循环次数大于“循环次数上限”,跳出循环节点。

2. “循环次数上限”的优先级大于“循环条件”。

循环节点支持配置节点的输出“字段列表”,与循环节点的“终点”相连接的组件字段作为循环节点的默认输出。

循环节点组件内置系统参数:

循环序号:当前循环次数,从0开始,不可编辑。

总循环次数:已经循环了的次数,不可编辑。

线程并发数:可设置并发量。默认值为5,该默认值可修改。

循环时间间隔:默认值为0,该默认值可编辑

对循环组件设置循环条件,内部更新循环条件的参数,如果循环内部更新循环条件的参数,下次循环前再判断循环条件,满足继续循环不满足循环条件停止循环。

参数条件支持写动态参数

当全局参数bac满足校验条件,返回“TRUE”,则继续进行循环,当全局参数bac不满足校验条件,返回“FALSE”,跳出循环。

循环次数上限:自行设置,为防止出现死循环。

2.使用场景

场景一:遍历场景

下面以一个简单的场景为例,进行完整的功能演示。我们通过循环遍历组件将原表中time_char字段作为排序字段,根据该字段的升序排序,逐一遍历,取每条数据最新的值,并传输到目标表中进行存储。

进入ETL任务页面,拖入表输入组件、循环遍历组件、表达式组件 、表输出组件其中循环遍历组件里面嵌套表达式组件、表输出组件。

步骤二:拖入循环节点组件、http接口组件、josn解析组件、校验组件、表输出组件。并将http接口组件、josn解析组件、校验组件、表输出组件全部存放在循环节点组件中。http接口组件用于接收接口响应的数据,json 解析组件作用解析接口返回的数据方便数据规范入库,检验组件校验数据是否全部响应完成。表输出组件存储接口返回的数据。

步骤三:配置http接口组件、json解析组件、校验组件、表输出组件、循环节点组件。http接口组件选择对应的数据接口,点击测试按钮保证能正常返回数据。Json解析组件根据接口返回数据格式进行解析配置。校验组件设置校验方式为行数等于指定值,此处我们设置指定值为2,并且将校验后的结果赋值给参数check_,代表的意思是当前置的josn解析组件解析出的数据条数不等于2条时,会提示校验失败,并且会赋值一个false 给check_参数,当解析的数据等于2条时,会将true赋值给check_。

步骤四,配置循环节点组件,双击编辑循环节点组件输入设置选择为无输入,循环设置里面因为我们需要做的操作是重复的进行请求接口,所以这里循环设置为循环条件设置,循环条件设置为'<#=check_#>'='true',循环上限次数的作用是避免任务进入死循环,在上述场景中我们需根据实际接口数据页数来设置,比实际接口数据分页的页数大即可。

参数设置中线程并发数 我们需设置为1,因为由于循环条件是动态参数,并发执行会导致执行结果与预期不符合。

设置完成后点击保存,配置表输出组件,选择接口返回数据存储的数据库跟表,更新方式选择为数据附加。

这个就设计出了一个能实现业务场景的ETL任务,该任务代表的业务含义是接口每次返回数据入库表的同时会做一次校验,判断这一次返回的数据是不是最后一页数据,判断依据就是此次接口返回数据条数是否等于每页最大数据量此处我们设置的是2,如果接口返回的数据条数等于2时,校验条件会给check_参数赋值为true,使其进入下一次循环,如果返回数据不等于2时,校验组件会给check_赋值为false ,使其跳出循环,代表接口数据已请求完成。

场景3:条件循环

下面通过相对复杂的业务场景讲解条件循环设置方式。

业务场景:通过一个http接口可获取一个资产挂接库表的数据,但为了防止单次请求返回的数据量太大超出了流量限制以及考虑性能问题,需要将响应数据分页接收并循环写入目标表中。

步骤一:接口查询数据总量并按照每页最大数据量进行分页,获取总页数

步骤二:定义一个ETL任务的全局变量参数,用于存储总页数。使用参数赋值组件将总页数的值赋予该全局变量参数。同时创建一个当前页数的全局参数,默认值传0。

步骤三:拖入一个循环节点组件,并将分页获取资产的HTTP接口、JSON解析、表输出等组件放置在循环节点组件中。

步骤四:编辑循环节点组件,输入设置为无输入(因为当前场景下循环条件的参数都来自于全局变量参数,无需从前置组件中获取条件值),循环设置为循环条件设置,条件表达式为'<#=pageindex#>' < '<#=pagecount#>',意思为当【当前页数】参数的值小于【分页总数】值时,组件下的任务将循环执行,并设置循环执行的上限次数为【分页总数】值

步骤五:对http接口组件获取到每页的数据进行解析,识别其中的字段及数据,最终追加写入值目标表

步骤六:每执行一次对【当前页数】参数的值进行调整,使其数值加1,建议使用sum函数,例:sum('<#=pageindex#>',1)。

步骤七:当参数【当前页数】的值等于【分页总数】时,循环结束

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇文件生成组件

下一篇大数据引擎

请先登录