说道循环,小伙伴们肯定不陌生,就是重复干一件事;而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 的结构,它的作用是连接循环条件和循环体,所以这个作业中包含其他两个步骤

接下来我会展开每个步骤里的设置方法,最后再介绍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”

Kettle 中的循环的更多相关文章

  1. kettle的job中使用循环

     job中使用循环 在一个不稳定的网络环境下作文件传输.偶尔会有超时或连接重置.这时须要稍等片刻再重试.在重试10次之后放弃并结束该job.类似使用循环解决这类问题.  该演示样例job演示了这样 ...

  2. kettle中调用java类

    kettle中调用java类 有时须要在kettle调用java类,如:验证.查询或自己定义加密等.有时甚至连主要的数据訪问都不那么简单,如获取一个存储文件或使用一个数据库连接,某些数据源可能封装在应 ...

  3. Kettle中根据一个输入行派生出多个输出行

    依然在北京,早上停电了,整个人感觉对不好了,接下来就说一下在使用ETL工具kettle做数据校验的时候遇到的一些问题,一级解决方案. 1:数据校验效果图下图: 原始表数据(需要校验的表数据) 对上表数 ...

  4. kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询

    kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询 如果你须要实现非传统的数据库查询操作.为了讨论这样的情景,我们如果你须要读取数据库中的正則表達式,然后检查输入的 ...

  5. kettle中全局变量的设置

    设置全局变量. 找到.properties文件: 在文件中设置值: 在kettle中新建一个job(不用做任何设置): 转换中获取便元的设置: 重启kettle的执行结果:

  6. SQL中的循环、for循环、游标

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...

  7. android中无限循环滑动的gallery实例

    android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...

  8. shell中的循环

    shell中的循环 for循环 类似于C语言的步长控制 例如: ;i<=;i++)); ); done 将1到10,依次乘以4,然后打印出来. 这里顺便提一下,shell里面表达式的计算,可以有 ...

  9. Oracle PL/SQL中的循环处理(sql for循环)

    今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...

随机推荐

  1. mysql 密码

    http://www.cnblogs.com/jonsea/p/5510219.html character-set-server=utf8 mysql 修改密码: ALTER USER 'root' ...

  2. css篇-简化版

    [CSS篇]简化版 (1)     CSS盒模型 CSS盒模型 题目:谈谈你对CSS盒模型的认识 1)       基本概念:标准模型+IE模型 2)       标准模型和IE模型的区别 计算宽度和 ...

  3. Puppeteer自动化测试cnode.js中文社区

    如果完全不了解puppeteer的朋友可以去看看我的这篇随笔:https://www.cnblogs.com/zlforever-young/p/11569890.html 开始之前需要了解的知识:E ...

  4. PAT 乙级练习题1002. 写出这个数 (20)

    1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...

  5. springmvc基于注解的权限控制

    一.权限码 /** * @Title: AuthCode.java * @Package cn.com.kamfu.auth * @Description: TODO(用一句话描述该文件做什么) * ...

  6. dubbo-源码阅读之Filter实现原理

    最近完成一个需求,使用阿里Arms需要在log里面加上traceId,但是发现dubbo异常 被ExceptionFilter捕获 并打印  打印不出traceI,然后百度搜索如何重写Filter 参 ...

  7. nodejs 模板引擎jade的简单使用

    1.jade html head style script body div ul li li jade1.js var jade=require('jade'); var str=jade.rend ...

  8. 【JavaWeb项目】一个众筹网站的开发(七)后台用户菜单

    mvn命令不能运行: jar-war-pom之间是可以直接写,优先找这个工程,而不是仓库的位置 pom-pom子父关系,需要去仓库中找,我们需要使用<relativePath>../pro ...

  9. ruby中数组认识

    a = 1...5这样赋值,a不是数组类型,1...5操作是一种枚举类型. a = ["1","2","3","4"], ...

  10. javascript实现获取指定精度的上传文件的大小简单实例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...