【Kettle从零开始】第⼋弹之Kettle变量参数传递介绍
对于ETL参数传递是⼀个很重要的环节,因为参数的传递会涉及到业务数据是如何抽取。下⾯我为⼤家举例⼀个简单的需求。
需求说明:需要抽取昨天的数据装载到⽬标表中。
1、参数作⽤域?
答:Kettle中参数⼤致可分为两类:⼀类是全局参数,⼀类是局部参数。
2、参数如何定义?
答:
A:全局参数定义是通过当前⽤户下.kettle⽂件夹中的kettle.properties⽂件来定义。定义⽅式是采⽤键=值对⽅式来定,
如:start_date=20130101
注:在配置全局变量时需要重启Kettle才会⽣效。
B:局部参数变量是通过“Set Variables”与“Get Variables”⽅式来设置。
注:在“Set Variables”时在当前转换当中是不能马上使⽤,需要在作业中的下⼀步骤中使⽤,⼤家可以思考下什么时候⽤到“Set Variables”,什么时候⽤到“GetVariables”
参数使⽤优先级顺序:全局变量-->局部变量-->本⾝变量
3、参数如何使⽤?
答:Kettle中参数使⽤⽅法有两种:⼀种是%%变量名%%,⼀种是${变量名}。这两种⽅法变量数据类型都是数字类型。
注:在SQL中使⽤变量时需要把“是否替换变量”勾选上,否则⽆法使变量⽣效。
了解了这些参数概念后,我们需要使⽤⼯具实现需求。
1、创建相应的参数变量设置转换(Set_Param.ktr)与数据流抽取转换(RotKang_Test01.ktr)。
问:通过什么⽅式来获取昨天⽇期作为参数?
答:我们可以通过“获取系统信息”组件获取昨天⽇期,再通过字段选择转换成yyyy-mm-dd格式,最后
设置成变量,设置参数变量为${YESTERDAY}。如下图:
(图8.0)
获取相关的⽇期参数,昨天⽇期。
(图8.1)
由于获取⽇期是到时分秒,通过字段选择转换成年⽉⽇格式。
(图8.2)
设置参数,点确定时会提⽰⼤致意思是“设置的参数不能在当前转换中使⽤”。
(图8.2)
2、由于数据流抽取(RotKang_Test01.ktr)转换上⼏弹已经完成,但是还没有设置参数使⽤,设置参数后如下图:
(图8.3)
注:在使⽤参数时需要勾选“替换SQL语句⾥的变量“
parameter数据类型3、最后使⽤Job把整个流程串连起来,如下图:
(图8.4)
最后测试RotKang_Test.kjb作业运⾏结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论