Kettle循环获取结果集

1. Kettle循环获取结果集

1.1 效果图

  • job(j1.kjb)

在这里插入图片描述

  • t1(t1.ktr)

在这里插入图片描述

1.2 转换介绍

  1. 自定义常量数据

在这里插入图片描述

在这里插入图片描述

  1. 写日志

点击 获取字段 会获取上一步 自定义常量数据 中的 元数据 。将其在运行中作为日志输出

在这里插入图片描述

  1. 复制记录到结果集

把自定义常量记录复制到结果集。然后在job中循环获取

1.3 job介绍

  1. 转换

在这里插入图片描述

  1. 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);//循环控制变量
	parent_job.setVariable("name", prevRow.get(0).getString("name", ""));
    true;

}
  1. 检验字段的值

在这里插入图片描述

  1. 写日志

循环打印定义的JavaScript中定义的变量

在这里插入图片描述

  1. JavaScript2
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("name", prevRow.get(i).getString("name", ""));
}
parent_job.setVariable("i",i);
true;

1.4 运行job结果

2020/03/26 10:32:59 - Spoon - 正在开始任务...
2020/03/26 10:33:00 - j1 - 开始执行任务
2020/03/26 10:33:00 - j1 - 开始项[转换]
2020/03/26 10:33:00 - 转换 - Using run configuration [Pentaho local]
2020/03/26 10:33:00 - 转换 - Using legacy execution engine
2020/03/26 10:33:00 - t1 - 为了转换解除补丁开始  [t1]
2020/03/26 10:33:00 - 自定义常量数据.0 - 完成处理 (I=0, O=0, R=0, W=3, U=0, E=0)
2020/03/26 10:33:00 - 写日志.0 - 
2020/03/26 10:33:00 - 写日志.0 - ------------> 行号 1------------------------------
2020/03/26 10:33:00 - 写日志.0 - 输出日志
2020/03/26 10:33:00 - 写日志.0 - 
2020/03/26 10:33:00 - 写日志.0 - id = 1
2020/03/26 10:33:00 - 写日志.0 - name = Kevin
2020/03/26 10:33:00 - 写日志.0 - 
2020/03/26 10:33:00 - 写日志.0 - ====================
2020/03/26 10:33:01 - 写日志.0 - 
2020/03/26 10:33:01 - 写日志.0 - ------------> 行号 2------------------------------
2020/03/26 10:33:01 - 写日志.0 - 输出日志
2020/03/26 10:33:01 - 写日志.0 - 
2020/03/26 10:33:01 - 写日志.0 - id = 2
2020/03/26 10:33:01 - 写日志.0 - name = Helena
2020/03/26 10:33:01 - 写日志.0 - 
2020/03/26 10:33:01 - 写日志.0 - ====================
2020/03/26 10:33:01 - 写日志.0 - 
2020/03/26 10:33:01 - 写日志.0 - ------------> 行号 3------------------------------
2020/03/26 10:33:01 - 写日志.0 - 输出日志
2020/03/26 10:33:01 - 写日志.0 - 
2020/03/26 10:33:01 - 写日志.0 - id = 3
2020/03/26 10:33:01 - 写日志.0 - name = Lucy
2020/03/26 10:33:01 - 写日志.0 - 
2020/03/26 10:33:01 - 写日志.0 - ====================
2020/03/26 10:33:01 - 写日志.0 - 完成处理 (I=0, O=0, R=3, W=3, U=0, E=0)
2020/03/26 10:33:01 - 复制记录到结果.0 - 完成处理 (I=0, O=0, R=3, W=3, U=0, E=0)
2020/03/26 10:33:01 - j1 - 开始项[JavaScript]
2020/03/26 10:33:01 - j1 - 开始项[检验字段的值]
2020/03/26 10:33:01 - j1 - 开始项[写日志]
2020/03/26 10:33:01 - 输出 - ---0
---[[1], [Kevin], [2], [Helena], [3], [Lucy]]
---Kevin
2020/03/26 10:33:01 - j1 - 开始项[JavaScript 2]
2020/03/26 10:33:01 - j1 - 开始项[检验字段的值]
2020/03/26 10:33:01 - j1 - 开始项[写日志]
2020/03/26 10:33:01 - 输出 - ---1
---[[1], [Kevin], [2], [Helena], [3], [Lucy]]
---Helena
2020/03/26 10:33:01 - j1 - 开始项[JavaScript 2]
2020/03/26 10:33:01 - j1 - 开始项[检验字段的值]
2020/03/26 10:33:01 - j1 - 开始项[写日志]
2020/03/26 10:33:01 - 输出 - ---2
---[[1], [Kevin], [2], [Helena], [3], [Lucy]]
---Lucy
2020/03/26 10:33:01 - j1 - 开始项[JavaScript 2]
2020/03/26 10:33:01 - j1 - 开始项[检验字段的值]
2020/03/26 10:33:01 - j1 - 开始项[Dummy]
2020/03/26 10:33:01 - j1 - 完成作业项[Dummy] (结果=[false])
2020/03/26 10:33:01 - j1 - 完成作业项[检验字段的值] (结果=[false])
2020/03/26 10:33:01 - j1 - 完成作业项[JavaScript 2] (结果=[false])
2020/03/26 10:33:01 - j1 - 完成作业项[写日志] (结果=[false])
2020/03/26 10:33:01 - j1 - 开始项[Dummy 2]
2020/03/26 10:33:01 - j1 - 完成作业项[Dummy 2] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[检验字段的值] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[JavaScript 2] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[写日志] (结果=[true])
2020/03/26 10:33:01 - j1 - 开始项[Dummy 2]
2020/03/26 10:33:01 - j1 - 完成作业项[Dummy 2] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[检验字段的值] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[JavaScript 2] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[写日志] (结果=[true])
2020/03/26 10:33:01 - j1 - 开始项[Dummy 2]
2020/03/26 10:33:01 - j1 - 完成作业项[Dummy 2] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[检验字段的值] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[JavaScript] (结果=[true])
2020/03/26 10:33:01 - j1 - 完成作业项[转换] (结果=[true])
2020/03/26 10:33:01 - j1 - 任务执行完毕
2020/03/26 10:33:01 - Spoon - 任务已经结束.

2. 关于Kettle中JavaScrpit的使用

官网文档地址

https://wiki.pentaho.com/pages/viewpage.action?pageId=4358187

发布了37 篇原创文章 · 获赞 22 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/stormkai/article/details/105116548
今日推荐