Kettle中分页问题

2,161 阅读2分钟

kettle 作业中分页请求接口,每次请求只能返回十条数据,这样我们就需要进行循环作业,进行分页请求数据,直到数据源中的最后一条 下面是循环作业的作业示意图

作业:

转换:

这样的转换就非常的复杂啦 首先我们在作业中需要设置一些我们需要的初始变量,页面,以及判断循环结束的标识
检验字段值:我们设置循环成立的标识 ${do_continue} 是从上一步的变量中获取来的

根据设置判断结束的标识来判断作业是否结束 循环成立一直执行转换文件
获取字段值是从作业中获取变量,当作转换中使用的变量,语法如图
js代码详情我的数据抽取文章

HTTPPost 详情我的数据抽取文章

判断返回结构

这里需要将我们设置的判断标识设置为 布尔值

判断返回结果,当返回的没有数据的时候 json中code变成-1,这里需要进行判断,直接将jsoninput中返回的结果集,首先将返回值json串变成json对象,然后获取json中code属性,这里需要获取作业中的变量,如果符合条件将标识置为false,这里需要设置标识的类型,(每一步都需要正确的设置变量的类型)

Switch/Case 就是一个if/else 分支判断

当是false 的时候需要将设置变量置为false ,用于结束抽取
当是ture 的时候需要将设置变量置为ture ,用于翻页,分页的变量需要将分页变量设置成String ,数字类型这里有精度问题,否则页码不对,获取不到数据,这里需要String类型转换成Inter类型,然后在加一,

这一步是设置全局分页的变量,返回值是多个,

去除重复记录,不知道这一步存在是否有必要
将流里的字段按照某一个字段进行排序,这一步主要的作用是将流程的字段和sql查询出的字段进行匹配,将流里的字段匹配sql查询出的字段,将匹配的字段那一列的某些值插入到数据库中

表输入是连接一个数据库,查询表中的值,获取另外一个数据源的意思

将连个数据源拼接成一个数据源,(两张表连接成一个数据表,)
如果程序执行太快,用延迟执行,相当于睡眠