1.组件介绍
校验组件主要通过对前置组件的结果集与所校验组件设置的条件进行比较,返回结果值。目前可设置的校验条件有行数等于指定值、行数等于指定输入组件行、所有数据行满足指定表达式、第一行数据满足指定表达式等四种方式。
校验组件中对校验结果也可进行配置,在校验组件中的设置页面,可配置校验失败后任务的执行情况,有预警跟终止执行两种方式。
预警:即使校验条件与实际不符合,也不会影响整个任务的执行,只会在执行日志中提示校验失败。
终止执行:当实际数据与校验条件不符合时,任务不论执行到哪一步了都会强制停止,日志抛出异常。
校验结果赋值:校验组件的返回结果时布尔型只有true、false 两种。通常会将校验结果赋值给全局参数供其他组件根据校验的结果,做下一步的执行操作。
2.使用场景
①.简单场景
物流公司A中存在一张物流订单表,表数据入下:
其中ETA、ATA分别代表预期到达时间与实际到达时间。在该物流公司A中预期到达时间必须比实际到达时间的值大,才算有效订单,否则该订单是超时订单。
实现该场景,我们进入数据集成模块,新建交换任务,拖入表输入组件、过滤组件、表输出组件、校验组件。
其中表输入组件选择该物流表,过滤组件过滤出状态为已签收的订单,输出到目标表中,校验组件配置校验规则为所有数据行满足指定表达式,其中表达式为ETA>ATA.
校验失败操作为终止执行。配置完成后点击执行任务即可。
当表中出现超时订单时,任务执行失败,可协助我们及时去处理超时订单。
②.复杂场景
在复杂场景中校验组件往往会跟其他组件组合使用,通过校验组件的返回值,供其他组件调用,来执行不同的ETL操作。下面我们通过以下场景来介绍校验组件与循环节点组件的组合使用配置。
业务场景:业务中数据读取方式只能通过接口进行读取,由于接口本身限制,做了数据分页,每次返回一页的数据只有2条,所以需要不断的去请求接口然后将接口响应的数据一次次的接收并存储到数据库表中,直至数据完全返回完成。
步骤一:进入ETL任务设计器页面定义全局参数check。用于判断数据是否返回完成。
步骤二:拖入循环节点组件、http接口组件、josn解析组件、校验组件、表输出组件。并将http接口组件、josn解析组件、校验组件、表输出组件全部存放在循环节点组件中。http接口组件用于接收接口响应的数据,json 解析组件作用解析接口返回的数据方便数据规范入库,检验组件校验数据是否全部响应完成。表输出组件存储接口返回的数据。
步骤三:配置http接口组件、json解析组件、校验组件、表输出组件、循环节点组件。http接口组件选择对应的数据接口,点击测试按钮保证能正常返回数据。Json解析组件根据接口返回数据格式进行解析配置。校验组件设置校验方式为行数等于指定值,此处我们设置指定值为2,并且将校验后的结果赋值给参数check_,代表的意思是当前置的josn解析组件解析出的数据条数不等于2条时,会提示校验失败,并且会赋值一个false 给check_参数,当解析的数据等于2条时,会将true赋值给check_。
步骤四:配置循环节点组件,双击编辑循环节点组件输入设置选择为无输入,循环设置里面因为我们需要做的操作是重复的进行请求接口,所以这里循环设置为循环条件设置,循环条件设置为'<#=check_#>'='true',循环上限次数的作用是避免任务进入死循环,在上述场景中我们需根据实际接口数据页数来设置,比实际接口数据分页的页数大即可。通过这样的组合配置,可读取接口的全部数据,且不会造成性能压力。
请先登录