kettle循环取结果集进行处理
程序员文章站
2024-02-14 09:54:10
...
需求
循环取结果集中的一行,再根据单个结果进行处理
此处实例:从test库取id字段结果集,存储(id,2 x id)到set_value表中
前提
test表:
set_value表:
具体步骤
第一步:
新建转换get_id_rows:
第二步:
新建作业:
按图所示连接各个组件
第一个js:
var prevRow=previous_result.getRows(); # 获取上一步的结果集
if (prevRow == null &&(prevRow.size()=0))
{
false;
}else{
parent_job.setVariable("ids", prevRow); #
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表:
实现所需功能。
下一篇: 详解Python中的相对导入和绝对导入
推荐阅读