Kettle的循环遍历
2016-01-11 10:31
183 查看
在ETL的工具Kettle中使用了循环遍历的一个案例,这个类似Java的for 循环遍历一样。
开发背景:数据库中存放的表数据table A和Table B,同时进行读取这些表的行数,或者读取通用的配置,这样才会使用Kettled的循环遍历功能。
在这里写一个测试的案例,主要实现的功能是遍历table a中的数据,在日志中输出。
整体流程如下:
这是一个Kettle 的作业,第一个转换内容是查询的表数据,同时复制到记录上。
表输入中的语句为:`select * from hbp_record –hbp_record 代表的查询的表名。
值得注意的是:在这里只是为了测试循环遍历的整个流程,整个转换在使用时使用的应该是配置文件,通用的配置文件。
第二个 遍历获取功能是一个JavaScript脚本验证,主要使用的是获取上一个转换传递过来的数据。具体代码如下:
第三步:检验字段的值
这个步骤代表类似Java中的for循环语句,进行循环遍历数据使用的,配置信息如下:
第四步:转换2具体的步骤如下:
第五步:再次使用Javascript的脚步验证
主要功能是:进行数据的累加,遍历执行表的数据
代码如下:
备注:
针对上图表,个人认为这是一个循环,相当于一下代码
这就是主要一个Kettle的循环遍历的流程,由于本人只是初学者,文章中有部分都是自己的理解,如果有问题欢迎各位大神指出,促进自我的学习
开发背景:数据库中存放的表数据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具体的步骤如下:
第五步:再次使用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;
备注:
针对上图表,个人认为这是一个循环,相当于一下代码
for(int i=0;i<size;i++){ 遍历数据 }
这就是主要一个Kettle的循环遍历的流程,由于本人只是初学者,文章中有部分都是自己的理解,如果有问题欢迎各位大神指出,促进自我的学习
相关文章推荐
- Redundant Paths-POJ3177(并查集+双连通分量)
- 关于Error:Error converting bytecode to dex:
- 报价事宜
- Python基本语法
- js动画--封装透明度
- Redundant Paths-POJ3177(并查集+双连通分量)
- Android string.xml中的替换方法
- 新版spring官网下载jar包
- 框架学习
- 【VOJ1895】 ニニスの守護 后缀数组 DP
- ejb的各个模块在eclipse中导入模块的jar包
- 创建对象时new子的作用
- 2015年最新苹果开发者账号注册流程详解
- 正則表達式基本元字符集及其含义(上)
- 【转】Mongodb的介绍及安装
- 用php自带的filter函数验证、过滤数据 -转载
- JAVA对象的初始化过程
- 登陆注册模块
- Android TextUtils类介绍
- 装饰模式【Decorator Pattern 】