【Kettle从零开始】第八弹之Kettle变量参数传递介绍
2017-10-25 18:57
316 查看
对于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}。如下图:
![](http://img.my.csdn.net/uploads/201403/11/1394515310_9911.jpg)
(图8.0)
获取相关的日期参数,昨天日期。
![](http://img.my.csdn.net/uploads/201403/11/1394515310_5847.jpg)
(图8.1)
由于获取日期是到时分秒,通过字段选择转换成年月日格式。
![](http://img.my.csdn.net/uploads/201403/11/1394515309_1499.jpg)
(图8.2)
设置参数,点确定时会提示大致意思是“设置的参数不能在当前转换中使用”。
![](http://img.my.csdn.net/uploads/201403/11/1394515317_3377.jpg)
(图8.2)
2、 由于数据流抽取(RotKang_Test01.ktr)转换上几弹已经完成,但是还没有设置参数使用,设置参数后如下图:
![](http://img.my.csdn.net/uploads/201403/11/1394515309_7806.jpg)
(图8.3)
注:在使用参数时需要勾选“替换SQL语句里的变量“
3、最后使用Job把整个流程串连起来,如下图:
![](http://img.my.csdn.net/uploads/201403/11/1394515309_8270.jpg)
(图8.4)
最后测试RotKang_Test.kjb作业运行结果。
原文地址:http://blog.csdn.net/rotkang/article/details/21008271
需求说明:需要抽取昨天的数据装载到目标表中。
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}。如下图:
![](http://img.my.csdn.net/uploads/201403/11/1394515310_9911.jpg)
(图8.0)
获取相关的日期参数,昨天日期。
![](http://img.my.csdn.net/uploads/201403/11/1394515310_5847.jpg)
(图8.1)
由于获取日期是到时分秒,通过字段选择转换成年月日格式。
![](http://img.my.csdn.net/uploads/201403/11/1394515309_1499.jpg)
(图8.2)
设置参数,点确定时会提示大致意思是“设置的参数不能在当前转换中使用”。
![](http://img.my.csdn.net/uploads/201403/11/1394515317_3377.jpg)
(图8.2)
2、 由于数据流抽取(RotKang_Test01.ktr)转换上几弹已经完成,但是还没有设置参数使用,设置参数后如下图:
![](http://img.my.csdn.net/uploads/201403/11/1394515309_7806.jpg)
(图8.3)
注:在使用参数时需要勾选“替换SQL语句里的变量“
3、最后使用Job把整个流程串连起来,如下图:
![](http://img.my.csdn.net/uploads/201403/11/1394515309_8270.jpg)
(图8.4)
最后测试RotKang_Test.kjb作业运行结果。
原文地址:http://blog.csdn.net/rotkang/article/details/21008271
相关文章推荐
- 【Kettle从零开始】第八弹之Kettle变量参数传递介绍
- JavaScript调用传递变量参数的相关问题及解决办法
- Mybatis介绍之参数传递
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- JAVASCRIPT中URL 传递参数(特殊字符)解决方法及转码解码的介绍
- 17周---项目1-体会函数参数传递----传递变量的地址
- 汇编中使用EBP传递参数和变量
- 【转载+修改】MFC 自定义消息四步曲与在参数中传递变量
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
- 通过环境变量传递参数给进程
- 【Kettle从零开始】第一弹之Kettle简单介绍
- JSP页面间传递参数方法介绍
- 一个函数调用另一个函数,最好用参数传递。不然就得声明为全局变量。被调用的函数里边,变量前面写 global
- shell和c语言的参数变量传递!(小寿原创)
- 一些与传递给shell的参数相关的变量
- C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化
- js调用方法传递变量作为参数的问题
- Mysql储存过程2:变量定义与参数传递
- 参数传递 强制类型转换 自动类型转换 临时变量
- 内联函数,引用变量,按引用传递参数,默认参数,函数重载,函数模板,函数模板具体化,decltype