欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kettle循环取结果集进行处理

程序员文章站 2024-02-14 09:54:10
...

需求

循环取结果集中的一行,再根据单个结果进行处理
此处实例:从test库取id字段结果集,存储(id,2 x id)到set_value表中

前提

test表:
kettle循环取结果集进行处理
set_value表:
kettle循环取结果集进行处理

具体步骤

第一步:
新建转换get_id_rows:
kettle循环取结果集进行处理
第二步:
新建作业:
kettle循环取结果集进行处理
按图所示连接各个组件
第一个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;
}

检验字段的值 组件设置:
kettle循环取结果集进行处理
执行自己想要的转换或sql://此处仅仅将id和2倍的id存到set_value表中
kettle循环取结果集进行处理
第二个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;

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

测试:

运行结果:
kettle循环取结果集进行处理
查看set_value表:
kettle循环取结果集进行处理
实现所需功能。

相关标签: Kettle