前言
kettle的转换本身是不支持循环处理的,需要结合作业功能和变量来实现循环传参。
图中工程,通过校验值的方法以达到循环的作用。
示例流程
- 初始化变量
初始化变量的目的是为了后面更清晰地调用变量。
- 获取token
通过一个转换,读取表或文件的方式获取参数,发起rest请求,来获取所有的token。
- 获取记录条数等信息
获取上一个转换任务所返回出来的记录,通过JavaScript获取记录的一些元信息,并作为后面循环用的条件。
var prevRow=previous_result.getRows();//获取上一个传递的结果
if (prevRow == null &&(prevRow.size()=0))
{
false;
}else{
parent_job.setVariable("tables", prevRow);//ArrayList存储表名变量,以数组形式保存入table1,table2
parent_job.setVariable("size", prevRow.size());//存储执行表的总数量
parent_job.setVariable("i", 0);//循环控制变量
parent_job.setVariable("token", prevRow.get(0).getString("token", ""));
true;
}- 检验变量是否满足条件
检验变量是否满足条件,如果满足就循环,不满足就结束任务
- 获取当前list下的值并进入下一个处理
通过JavaScript将当前i变量为下标指向的记录取出,并设置入变量,然后交给下一个任务组处理。
var prevRow=previous_result.getRows();
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("i"))+1;
if(i<size){
parent_job.setVariable("token", prevRow.get(i).getString("token", ""));;
}
parent_job.setVariable("i",i);
true;示例文件
- 百度网盘: 链接:https://pan.baidu.com/s/1cQiPw6SgBBsKq5dnqZNjDQ
提取码:6666 - 本地下载:小屋下载区









Comments | NOTHING