Kettle的循环遍历

在ETL的工具Kettle中使用了循环遍历的一个案例,这个类似Java的for 循环遍历一样。
开发背景:数据库中存放的表数据table A和Table B,同时进行读取这些表的行数,或者读取通用的配置,这样才会使用Kettled的循环遍历功能。
在这里写一个测试的案例,主要实现的功能是遍历table a中的数据,在日志中输出。
整体流程如下:
这里写图片描述
这是一个Kettle 的作业,第一个转换内容是查询的表数据,同时复制到记录上。
这里写图片描述
表输入中的语句为:`select * from hbp_record –hbp_record 代表的查询的表名。
值得注意的是:在这里只是为了测试循环遍历的整个流程,整个转换在使用时使用的应该是配置文件,通用的配置文件。
第二个 遍历获取功能是一个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);//循环控制变量
    /**
    TABLENAME 这里写死了,hbp_record 代表了需要查询的表,
    prevRow.get(0).getString("TABLES","")//这是通用版的
    */
    parent_job.setVariable("TABLENAME","HBP_RECORD");
    true;
}

第三步:检验字段的值
这个步骤代表类似Java中的for循环语句,进行循环遍历数据使用的,配置信息如下:
检验字段的值

第四步:转换2具体的步骤如下:
转换2实现数据的输出

第五步:再次使用Javascript的脚步验证
主要功能是:进行数据的累加,遍历执行表的数据
代码如下:

var list_Tables =parent_job.getVariable("tables").replace("[","").replace("]","").split(",");
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("i"))+1;
if(i<size){
    parent_job.setVariable("TABLENAME", list_Tables[i]);
}
parent_job.setVariable("i",i);
true;

备注:图表1
针对上图表,个人认为这是一个循环,相当于一下代码

for(int i=0;i<size;i++){
     遍历数据
}

这就是主要一个Kettle的循环遍历的流程,由于本人只是初学者,文章中有部分都是自己的理解,如果有问题欢迎各位大神指出,促进自我的学习

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老王学Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值