关于kettle中作业循环的设置

循环是出现在作业中的概念,因为转换里的步骤是并行执行的,所以循环对它来说没什么意义。循环的需求肯定是“我想执行多次某个作业(转换)”。

得到这样的需求,我们可以通过两种方式完成。一种是使用js脚本的方式,配合“条件判断”作业项来完成循环,因为这种方法太过复杂,所以不在本节详细描述。

下面介绍一种方法可以直接对作业或者转换进行循环。避免在作业中产生更多的作业项。

做这个实验需要两个转换和一个作业。他们分别如下:

  • Jb_Test_Cycle_2 :整体调度,包括了Tr_Test_Cycle_1、Tr_Test_Cycle_2
  • Tr_Test_Cycle_1 :获取系统时间,插入到日志表中
  • Tr_Test_Cycle_2 :生成4条记录,让Tr_Test_Cycle_1 执行4次。

接下来看看他们的配置:

1、Jb_Test_Cycle_1 的拓扑如下:

2、需要单独对Tr_Test_Cycle_1进行配置:

双击Tr_Test_Cycle_1 在Advanced 选项卡中勾选 下图所示的复选框。

表示前面每传过来一行数据,我都要执行一次转换。有点像一个for循环。

3、Tr_Test_Cycle_1 的配置:

使用行生成工具,生成一行,不仅仅限于这个工具。

获取系统时间可以获取到当前的系统时间。

4、Tr_Test_Cycle_2 的配置:

5、从数据库中查看日志表,得到的结果就是4条信息

说明Tr_Test_Cycle_1整体循环了4次。

时间: 2024-10-02 05:00:00

关于kettle中作业循环的设置的相关文章

Kettle 中的循环

说道循环,小伙伴们肯定不陌生,就是重复干一件事:而kettle中的循环一般是发生在job中,因为job是串行执行的: kettle的循环有两种,一种是通过js脚本,另外一种是通过遍历前面步骤返回的每一行. 下面是我写的伪代码,我将使用Kettle来实现这段代码: array = ['sys1','sys2','sys3','sys4'] for variable in array:     if variable == 'sys1' :         print('%s被调用'%(variab

kettle的job中使用循环

 job中使用循环 在一个不稳定的网络环境下作文件传输.偶尔会有超时或连接重置.这时须要稍等片刻再重试.在重试10次之后放弃并结束该job.类似使用循环解决这类问题. 该演示样例job演示了这样的循环场景.文件传输步骤被虚拟的场景(随机数产生成功机率为10%)取代,成功即写日志报告成功.其它90%报告失败日志报告失败并继续,最多执行10次:点击下载演示样例: d 请同意我提醒一句.解决在之前不能确定循环运行次数的的情景下,使用本例中方法.假设是已知的循环次数或循环次数时可计算的,最好在单独的

kettle中实现动态SQL查询

kettle中实现动态SQL查询 在ETL项目中,通常有根据运行时输入参数去执行一些SQL语句,如查询数据.本文通过kettle中的表输入("table input")步骤来说明动态查询.参数查询.示例代码使用内存数据库(H2),下载就可以直接运行,通过示例学习更轻松. SQL查询语句中占位符绑定字段值 第一个接近动态语句的是大家熟悉的从SQL代码中执行,开始写一个SQL查询,包含一些占位符,然后绑定值到占位符,使之成为一个有效的查询并执行.根据需要可以绑定多个值并循环执行.本示例的名

kettle中含有参数传递的定时任务

1需求描述 使用Linux中的CRONTAB调度kettle 2 数据库环境 DROP TABLE DB2INST1.TEST_1; CREATE TABLE DB2INST1.TEST_1 ( ID INTEGER, NAME VARCHAR (10), DATE VARCHAR(10) ) IN USERSPACE1; INSERT INTO TEST_1 VALUES ('1','sds','20160909'); INSERT INTO TEST_1 VALUES ('2','sds',

0x3f3f3f3f...编程中无穷大常量的设置技巧

转自 http://aikilis.tk/ 如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值.如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在更多的情况下,0x7fffffff并不是一个好的选择. 很多时候我们并不只是单纯拿无穷大来作比较,而是会运算后再做比较,例如在大部分最短路径算法中都会使用的松弛操作:if (d[u]

kettle中调用java类

有时需要在kettle调用java类,如:验证.查询或自定义加密等.有时甚至连基本的数据访问都不那么简单,如获取一个存储文件或使用一个数据库连接,某些数据源可能封装在应用程序中,手工使用自定义的java客户端访问是唯一的方法.本文介绍如何在kettle中调用java类.示例代码在这里下载. 注:如果你使用kettle4.0及以上版本,也你也可以使用user defined java class 步骤实现.   Modified Java ScriptValue 步骤 关键要在kettle中使用M

jQuery源码分析-jQuery中的循环技巧

Js代码   作者:nuysoft/JS攻城师/高云 QQ:47214707 EMail:[email protected] 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. 前记:本文收集了jQuery中出现的各种遍历技巧和场景 Js代码   // 简单的for-in(事件) for ( type in events ) { } Js代码   // 缓存length属性,避免每次都去查找length属性,稍微提升遍历速度 // 但是如果遍历HTMLCollection时,性能提升非常

Quartz中时间表达式的设置-----corn表达式 (转)(http://www.cnblogs.com/GarfieldTom/p/3746290.html)

Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y(?) -->,   分别对应: 秒>分>小时>日>月>周>年, 举例: 1.每天什么时候执行: <value>0 59 23 * * ?</value>: 如下为每天23:59:00开始执行 <value>0 1,2,3 11,12

kettle入门(四) 之kettle中取任意时间变量的使用详细案例

引: 在数据仓库项目中 有一类和生产或者外围系统交互的接口称为FTP文件接口, 用kettle开发.实现这种接口 配置脚本时,经常需要用时间变量来取或者上传FTP里面 固定格式文件名的文本,例如 生产系统定时 每天推送前天的数据文本 到某个FTP服务器 2014-04-28 推送文件名 2015-04-26.txt.gz 2014-04-27 推送文件名 2015-04-25.txt.gz 实现: kettle 版本3.0.4,如下图所示: 所需要三个功能组件 1 获取系统信息 2 java s