Kettle 中的循环
说道循环,小伙伴们肯定不陌生,就是重复干一件事;而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”
Kettle 中的循环的更多相关文章
- kettle的job中使用循环
job中使用循环 在一个不稳定的网络环境下作文件传输.偶尔会有超时或连接重置.这时须要稍等片刻再重试.在重试10次之后放弃并结束该job.类似使用循环解决这类问题. 该演示样例job演示了这样 ...
- kettle中调用java类
kettle中调用java类 有时须要在kettle调用java类,如:验证.查询或自己定义加密等.有时甚至连主要的数据訪问都不那么简单,如获取一个存储文件或使用一个数据库连接,某些数据源可能封装在应 ...
- Kettle中根据一个输入行派生出多个输出行
依然在北京,早上停电了,整个人感觉对不好了,接下来就说一下在使用ETL工具kettle做数据校验的时候遇到的一些问题,一级解决方案. 1:数据校验效果图下图: 原始表数据(需要校验的表数据) 对上表数 ...
- kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询 如果你须要实现非传统的数据库查询操作.为了讨论这样的情景,我们如果你须要读取数据库中的正則表達式,然后检查输入的 ...
- kettle中全局变量的设置
设置全局变量. 找到.properties文件: 在文件中设置值: 在kettle中新建一个job(不用做任何设置): 转换中获取便元的设置: 重启kettle的执行结果:
- SQL中的循环、for循环、游标
我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...
- android中无限循环滑动的gallery实例
android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...
- shell中的循环
shell中的循环 for循环 类似于C语言的步长控制 例如: ;i<=;i++)); ); done 将1到10,依次乘以4,然后打印出来. 这里顺便提一下,shell里面表达式的计算,可以有 ...
- Oracle PL/SQL中的循环处理(sql for循环)
今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...
随机推荐
- 自动化运维Shell入门
运维shell 作用 项目部署 项目监控 什么是shell shell是一个程序,/bin/bash/,是一个命令解释器所有linux命令都由他来执行,打开终端就进入了 shell的交互式命令 运行方 ...
- ARC080E
倒着考虑 每次拿出的第一个必须是奇数位置,第二个必须是偶数位置.每次删数都不能跨过已被删去的位置. 事实上只要开个堆维护一下区间就行了.但是众所周知我zz,所以我写的线段树 #include<i ...
- CSS2 从入门到精通
1. 常用的选择器 1. 元素选择器 作用:通过元素选择器可以选择指定的元素 语法:tag{} p{ color: red; } h1{ color: red; } 2. id 选择器 作用:通过元素 ...
- Javafx弹窗
在javafx中可能用到一些弹窗,比如点击某个按钮后弹出弹窗提示信息等等 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle( ...
- Samba服务的安装
Samba的安装 1.准备环境 Centos7 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce ...
- 针对利用tzselect修改时间及ln -sf 修改系统时间不好使的情况 linux 6.5
首先,利用ntpdate -u {ip}同步目标服务器的时间 然后这里一般物理硬件的时间也不会对,所以才会导致修改时间不成功所以要同时把物理硬件时间进行修改ntpdate之后,时间已经变更使用hwcl ...
- Spring定时任务的几种实现(转)
转自:http://gong1208.iteye.com/blog/1773177 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几 ...
- 【LeetCode】水题(刚开始重新刷题找感觉用的)
[9] Palindrome Number [Easy] 给一个数字,用不转化成字符串的方式判断它是否是回文. 先求数字长度,然后把数字的后半段做翻转(就是不断地取模,除10这种方式),然后判断前后半 ...
- 【Luogu】【关卡1-8】BOSS战-入门综合练习2(2017年10月)【AK】------都是基础题
P1426 小鱼会有危险吗 我个人觉得这个题目出的不好,没说明白,就先只粘贴的AC代码吧 #include <bits/stdc++.h> using namespace std; int ...
- uva658 dijkstra+状态压缩
题目大意: 假定有n个潜在的bug和m个补丁,每个补丁用长为n的字符串表示.首先输入bug数目以及补丁数目.然后就是对m 个补丁的描述,共有m行.每行首先是一个整数,表明打该补丁所需要的时间.然后是两 ...