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步骤

kettle 输出 rest client 响应结果 kettle setvariable_参数设置



打开get system info,在type选项选择commandline argument 1

kettle 输出 rest client 响应结果 kettle setvariable_命令行_02



打开set variables步骤,直接点击get fields,得如下图所示

kettle 输出 rest client 响应结果 kettle setvariable_命令行_03



至此使用vdate参数接收了命令行参数的值


3、使用其他值来设置参数

在公司,经常需要从配置表里取数据作为参数使用


这里使用sysdate作为示例,数据库环境oracle

使用了两个transformation来配合设置


数据流向

transformation1------>transfromation2


第一个transformation,主要是从数据库表中取数据进入kettle的流里面,内部如下

kettle 输出 rest client 响应结果 kettle setvariable_命令行_04


第一个步骤是table input,使用一个SQL,查出格式化后的昨天的日期

kettle 输出 rest client 响应结果 kettle setvariable_参数设置_05




第二步select values,按get fields to select

kettle 输出 rest client 响应结果 kettle setvariable_数据_06




第三步copy rows to result


第二个transformation,从流中取出数据,并设置为variable,内部如下

kettle 输出 rest client 响应结果 kettle setvariable_数据_07



第一步get rows from result,这里自己在fieldname上填入前面步骤中传入的数据

kettle 输出 rest client 响应结果 kettle setvariable_命令行_08



第二步 set variables,可以参考上面的设置get system info的步骤,一样的


4、参数设置完毕后,我们可以使用了,很多地方都能使用参数,除了脚本等地方,很多例如文件名,文件路径,数据库连接等,都可以使用参数

例如下图的SQL script

kettle 输出 rest client 响应结果 kettle setvariable_命令行_09



ID这个variable设置好后,就可以以${ID}的形式使用

在某些步骤,要勾上use variable substitution,参数才能生效