Kettle 中的循环


说道循环,小伙伴们肯定不陌生,就是重复干一件事;而kettle中的循环一般是发生在job中,因为job是串行执行的;

kettle的循环有两种,一种是通过js脚本,另外一种是通过遍历前面步骤返回的每一行。

 

下面是我写的伪代码,我将使用Kettle来实现这段代码:

array = ['sys1','sys2','sys3','sys4']

for variable in array:
     if variable == 'sys1' :
         print('%s被调用'%(variable,))
        
     elif variable == 'sys2' :
         print('%s被调用'%(variable,))
    
     elif variable == 'sys3' :
         print('%s被调用'%(variable,))
    
     elif variable == 'sys4' :
         print('%s被调用'%(variable,))
    
     else :
         print('没有被调用')

 

代码里循环变量是variable,用for遍历完整个数组,则表示循环结束。

循环体中有一组判断条件,判断数组中的元素归于哪一个分支。

如果所有判断条件都不符合,则打印“没有被调用”

 

1. Kettle作业介绍

schedule_job.kjb : 用来关联循环变量和循环体的作业,也是调用的入口,可以理解main

get_data_from_datagrid.ktr : 生成数组,也就是循环条件。

cycle_body_job.kjb : 循环体,数组里有几条数据,循环体就执行几次。

 

2. 下图是 schedule_job 的结构,它的作用是连接循环条件和循环体,所以这个作业中包含其他两个步骤

image

 

接下来我会展开每个步骤里的设置方法,最后再介绍schedule_job 是如何设置的;

如果展开的是文件,则直接写文件名,如果展开的是步骤,则带上文件名-步骤名称。

例如 展开文件 get_data_from_datagrid.ktr

       展开步骤 get_data_from_datagrid-Data Grid

 

3. get_data_from_datagrid.ktr 展开

image

 

只有两个步骤,一个是data grid,用来生成数组,另外一个步骤是Copy rows to result ,用来把返回的数据复制到结果中,可以返回给调用者。调用者就是外面的schedule_job.ktr。

 

4. get_data_from_datagrid-Data Grid 展开

image

在Meta选项卡中填写字段信息, 字段名是SYSTEMNAME 类型是字符串

image

在Data选项卡里填写字段的值,这个过程就好像往excel里填数据一样。

 

5. cycle_body_job.kjb 展开

image

 

双击空白的地方,打开“Parameters”选项卡, 在里面输入变量名SYSTEMNAME。这个变量跟前面的步骤中字段名相同。

image

 

6. cycle_body_job-is_sys1 展开

其他判断条件类似,不一一展开。

image

 

7. schedule_job 设置方法

image

 

勾选“Execute every input row”

image

 

image


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM