说道循环,小伙伴们肯定不陌生,就是重复干一件事;而kettle中的循环一般是发生在job中,因为job是串行执行的;
kettle的循环有两种,一种是通过js脚本,另外一种是通过遍历前面步骤返回的每一行。
下面是我写的伪代码,我将使用Kettle来实现这段代码:
array = [‘sys1‘,‘sys2‘,‘sys3‘,‘sys4‘] for variable in array: |
代码里循环变量是variable,用for遍历完整个数组,则表示循环结束。
循环体中有一组判断条件,判断数组中的元素归于哪一个分支。
如果所有判断条件都不符合,则打印“没有被调用”
1. Kettle作业介绍
schedule_job.kjb : 用来关联循环变量和循环体的作业,也是调用的入口,可以理解main
get_data_from_datagrid.ktr : 生成数组,也就是循环条件。
cycle_body_job.kjb : 循环体,数组里有几条数据,循环体就执行几次。
2. 下图是 schedule_job 的结构,它的作用是连接循环条件和循环体,所以这个作业中包含其他两个步骤
接下来我会展开每个步骤里的设置方法,最后再介绍schedule_job 是如何设置的;
如果展开的是文件,则直接写文件名,如果展开的是步骤,则带上文件名-步骤名称。
例如 展开文件 get_data_from_datagrid.ktr
展开步骤 get_data_from_datagrid-Data Grid
3. get_data_from_datagrid.ktr 展开
只有两个步骤,一个是data grid,用来生成数组,另外一个步骤是Copy rows to result ,用来把返回的数据复制到结果中,可以返回给调用者。调用者就是外面的schedule_job.ktr。
4. get_data_from_datagrid-Data Grid 展开
在Meta选项卡中填写字段信息, 字段名是SYSTEMNAME 类型是字符串
在Data选项卡里填写字段的值,这个过程就好像往excel里填数据一样。
5. cycle_body_job.kjb 展开
双击空白的地方,打开“Parameters”选项卡, 在里面输入变量名SYSTEMNAME。这个变量跟前面的步骤中字段名相同。
6. cycle_body_job-is_sys1 展开
其他判断条件类似,不一一展开。
7. schedule_job 设置方法
勾选“Execute every input row”
原文地址:https://www.cnblogs.com/fooobabar/p/10987554.html