kettle循环取结果集进行处理方法一(使用js)

需求

循环取结果集中的一行,再根据单个结果进行处理
此处实例:从test库取id字段结果集,存储(id,2 x id)到set_value表中
此处使用js脚本
方法二(不使用js):https://blog.csdn.net/weixin_44135544/article/details/103522740

前提

test表:
在这里插入图片描述
set_value表:
在这里插入图片描述

具体步骤

第一步:
新建转换get_id_rows:
在这里插入图片描述
第二步:
新建作业:
在这里插入图片描述
按图所示连接各个组件
第一个js:

var prevRow=previous_result.getRows(); # 获取上一步的结果集
if (prevRow == null &&(prevRow.size()=0))
{
    false;

}else{
    parent_job.setVariable("size", prevRow.size()); # 结果集行数
    parent_job.setVariable("i",0); # 设置一个变量,用于循环结果集
    parent_job.setVariable("V_ID",prevRow.get(0).getString("id","")); # 根据变量名取结果集中的数据
    true;
}

检验字段的值 组件设置:
在这里插入图片描述
执行自己想要的转换或sql://此处仅仅将id和2倍的id存到set_value表中
在这里插入图片描述
第二个js:

var prevRow=previous_result.getRows();
var size = new Number(parent_job.getVariable("size")); # 总行数
var i = new Number(parent_job.getVariable("i"))+1; # 变量i加一
if(i<size){
parent_job.setVariable("V_ID",prevRow.get(i).getString("id","id")); # 设置结果集的下一行数据
}
parent_job.setVariable("i",i); # 将+1后的i再赋值给变量i
true;

又转到检验组件,判断是否循环完毕,没有继续循环,完毕结束。

测试:

运行结果:
在这里插入图片描述
查看set_value表:
在这里插入图片描述
实现所需功能。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值