kettle中如何实现循环

kettle使用中常常需要针对某些条件进行循环控制,如下介绍使用循环的方法:

实现循环主要涉及循环变量初始化;判断条件;计数器的累加。本次举例从表中或者文本中读取每一行数据进行循环.

读取文本:读取某个表的数据进行循环(也可以读取某个文件进行循环):

--比如查询某个表某列值
SELECT 'aaa' as id from dual
union all
SELECT 'bbb' as id from dual
union all
SELECT 'ddd' as id from dual

初始化参数(JS脚本):获取前一个转换传递的值


var prevRow=previous_result.getRows();//获取上一个传递的结果,数据库中查询的结果集,或者文本结果集(结果集对象)
//prevRow.size() 表示结果集的的数量
if (prevRow == null &&(prevRow.size()=0))
{
	false;
}else{
    //初始化变量  tables,size,i 都是自定义变量名称。供后续使用
	parent_job.setVariable("tables", prevRow);//ArrayList存储表名变量,以数组形式保存入
	parent_job.setVariable("size", prevRow.size());//存储执行表的总数量
	parent_job.setVariable("i",new Number(-1));//循环控制变量
 	
	true;
}

检验字段的值:循环控制器,用于判断是都继续循环的条件

 计数累加器

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("TABLE_NAME", prevRow.get(i).getString("id","id"));//根据字段名获取值,获取的值赋值给TABLE_NAME。
	parent_job.setVariable("i",i);
	true;
}else{
	false;
}

实现逻辑:根据自己的需求在转换中实现自己的逻辑即可。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kettle是一款强大的数据集成工具,也可以用于实现循环跑批。在Kettle,我们可以通过使用Transformation Job Steps来实现循环跑批。下面是实现步骤: 1. 准备数据源:为了实现循环跑批,我们需要先准备好数据源,比如数据库的表或者文件夹的文件。 2. 创建Transformation:在Kettle创建一个Transformation作为主程序,用于控制数据批处理的流程。在Transformation,我们需要完成数据的抽取、转换、加载等过程。 3. 创建Job:创建一个Job用于控制Transformation的执行顺序,以及进行循环。我们可以使用“循环控制”步骤,设置循环次数及循环条件,也可以设置在前一次循环结束后,再次开始下一次循环。 4. 创建转换/任务循环步骤: 我们需要在Job添加“转化循环”或“任务循环”步骤,在这个步骤,我们可以指定需要循环的转换或任务,修改他们的参数,以及设置循环次数。在每个循环周期结束后,步骤会自动调用转换或任务进行处理,直到循环次数或者循环条件不满足时停止。 5. 运行Job:设置好循环的参数和条件之后,我们可以直接在Kettle运行Job,并实时查看运行日志。通过查看日志,我们可以了解每个循环周期的处理情况,如出错等异常情况。 总之,通过使用Kettle的Transformation Job Steps,我们可以快速实现数据批处理的循环跑批,提高数据处理的效率和准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值