KETTLE有多种参数,我主要用到的,分别是parameter,argument和自定义的参数。
1、parameter
使用这个参数相对比较简单,可以在job的空白处右键选job setting,可以看到tab parameter选项
在parameter选项可以定义参数的名字和默认值,
图形界面运行job时,可以直接在运行JOB前的lauch面板输入这个参数的值,
命令行运行job时,可以使用-param指定参数的值
For example
kitchen.sh -file=/home/kettle/test.kjb -param:VDATE=20150101
2、argument
和parameter一样
图形界面运行job时,可以直接在运行JOB前的lauch面板输入这个参数的值
命令行运行时,直接在命令行后输入
For example
kitchen.sh -file=/home/kettle/test.kjb 20150101
如何在流程中取得这个参数的值呢
首先,和参数设置有关的步骤,都要使用transformation进行
新建一个transformation,使用get system info步骤来获得参数值
转换内部如下图
get system info 输出指向 set variable步骤
打开get system info,在type选项选择commandline argument 1
打开set variables步骤,直接点击get fields,得如下图所示
至此使用vdate参数接收了命令行参数的值
3、使用其他值来设置参数
在公司,经常需要从配置表里取数据作为参数使用
这里使用sysdate作为示例,数据库环境oracle
使用了两个transformation来配合设置
数据流向
transformation1------>transfromation2
第一个transformation,主要是从数据库表中取数据进入kettle的流里面,内部如下
第一个步骤是table input,使用一个SQL,查出格式化后的昨天的日期
第二步select values,按get fields to select
第三步copy rows to result
第二个transformation,从流中取出数据,并设置为variable,内部如下
第一步get rows from result,这里自己在fieldname上填入前面步骤中传入的数据
第二步 set variables,可以参考上面的设置get system info的步骤,一样的
4、参数设置完毕后,我们可以使用了,很多地方都能使用参数,除了脚本等地方,很多例如文件名,文件路径,数据库连接等,都可以使用参数
例如下图的SQL script
ID这个variable设置好后,就可以以${ID}的形式使用
在某些步骤,要勾上use variable substitution,参数才能生效