ETL工具kettle设置全局变量

昨天让kettle传入的参数搞的很郁闷,从网上查一些信息,大多讲的是每个transformation内部传递参数,要么就是讲在job中把参数传进transformation,而且还不正确。
大家最常碰到的问题恐怕就是要做增量抽取了吧,增量抽取不可避免要碰到时间戳,那么我们假如每天晚上需要抽取当天新增的数据到目标库,这就需要一个变量来操作。
要是每个transformation都用一个单独控件来记录这个变量,貌似没什么意义,所以总想有没有能统一管理一个参数,然后让所有的transformation和job都可以读到呢?
有。

首先,打开.kettle\kettle.properties,直接在里面定义,比如:
V_YES_DATE=to_char(sysdate,'yyyymmdd')
这里支持数据库函数,说的更直白点,就是这里定义是个啥,那么在transformation里边取到的它就是啥。
定义之后,保存,重启spoon。
在需要的地方,直接%%V_YES_DATE%%,或者${V_YES_DATE}就可以得到。
举例:
SELECT
  NAME
, SEX
FROM TESTTABLE
where

to_char(cdate,'yyyymmdd')=${V_YES_DATE}
或者
SELECT
  NAME
, SEX
FROM TESTTABLE
where

to_char(cdate,'yyyymmdd')=%%V_YES_DATE%%
也有人说${}这种方式是在linux下的,%%%%是在windows下的,反正我在windows下这两种写法均可。
kettle资料只能说是太少了,就这么点事折腾我一天了。。。
哦对了,别忘了把那个替换SQL语句里的变量这个勾上。。。

猜你喜欢

转载自25262875qq.iteye.com/blog/1852838
今日推荐