kettle 变量里面空串用什么变量表示

转载:http://blog.csdn.net/neweastsun/article/details/ &谢谢!
kettle参数、变量详细讲解
kettle 3.2 以前的版本里只有 variable 和 argument,kettle 3.2 中,又引入了 parameter 概念;variable 即environment variables(环境变量或全局变量),即使是不同的转换它们也拥有同样的值;而argument(位置参数)和parameter(命名参数),可以映射为局部变量,只针对一个特定的转换,比如像是限定结果集的大小和过滤条件。
1、&&&&&variable(变量)
variables 也可以认为叫做environment variables , 就像它的名字一样,主要是用来设定环境变量的,比如最常见的:文件的存放地址,smtp的配置等等,你也可以把它认为是编程语言里面的全局变量,即使是不同的转换它们也拥有同样的值;
变量可以用在转换或作业中,可以通过在转换中使用&Set Variable&步骤定义或在kettle.properties文件中定义,文件的路径默认如下:
$HOME/.kettle (Unix/Linux/OSX)
C:\Documents andSettings\&username&\.kettle\ (Windows)
C:\Users\&username&\.kettle\(Windows Vista)
1.1、kettle.properties文件中定义全局变量
&&&&&&打开文件,直接在里面定义,如: TODAY=to_char(sysdate,'yyyy-mm-dd'),这里支持数据库函数,说的更直白点,就是这里定义是个啥,那么在transformation里边取到的它就是啥。在需要的地方,直接%%V_YES_DATE%%,或者${V_YES_DATE}就可以得到。需要提醒的是如果编辑中文,需要navationtoascii工具或在eclipse中编辑。定义后保存重启spoon才生效。
2、 & & arument(位置参数)
&&&&&&kettle 3.2 以前的版本里只有 argument,也叫Positional arguments,就是最多能设置的 10 个命令行参数,通过在命令行参数的位置来区别
3、&&&&&parameter(命名参数)
在 kettle 3.2 中,又引入了 parameter 概念,可以通过名称来区别,并可以在命令行中通过/param:name=value 的方式设置设置参数, 另外/listparam 可以列出一个ktr 或 kjb 里定义的parameter。
命名参数可以在转换或作业的设置对话框中定义,定义时给定默认值;当在SPOON中运行作业或转换时,在运行对话框中输入命名参数的值。在命令行中运行时,也可以通过-param:name=value给每个命名参数赋值,param:name=value在命令行中一个整体块,视为命令的一个参数。
例:运行job.kjb文件,有两个参数files.dir=/opt/files&、max.date=
Linux: ./kitchen.sh-file:job.kjb -param:files.dir=/opt/files -param:max.date=
Windows: Kitchen.bat -file:job.kjb “-param:files.dir=/opt/files”“-param:max.date=″
命名参数可作为变量,在运行时命名参数并映射为变量。如果你定义了命名参数为foo,你可以在任何地方引用通过${foo}.
命名参数使用需要在转换、job中设置命名参数
windows下参数必须加双引号
执行命令:
Linux: ./kitchen.sh-file:job.kjb -param:files.dir=/opt/files -param:max.date=
Windows: Kitchen.bat -file:job.kjb “-param:files.dir=/opt/files”“-param:max.date=″
例子图片见附件
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:360897次
积分:3713
积分:3713
排名:第6572名
原创:48篇
转载:140篇
评论:26条
(1)(3)(2)(1)(4)(4)(1)(5)(3)(4)(1)(3)(1)(2)(7)(1)(2)(1)(4)(5)(1)(5)(3)(2)(4)(16)(2)(2)(4)(1)(1)(1)(1)(4)(4)(10)(5)(9)(3)(9)(3)(4)(2)(1)(1)(3)(10)(10)(1)(7)(4)Kettle Spoon - variable in file name input [锅勺在文件名输入变量] - 问题-字节技术
Kettle Spoon - variable in file name input
锅勺在文件名输入变量
问题 (Question)
anyone know how to set variable for file name in 'Text File Input'?
I want the file name depends on when I execute the transformation, example:
D:\input_file_&variable&.txt
today = D:\input_file_.txt
tomorrow = D:\input_file_.txt
FYI, I'm using Kettle Spoon - 4.2.0
任何人都知道如何设置变量的文件名的文本文件的输入吗?我想文件名取决于当我执行转换:D:\input_file_&variable&.txt
today = D:\input_file_.txt
tomorrow = D:\input_file_.txt
另外,我用勺子4.2.0壶
最佳答案 (Best Answer)
In set form, you can use variable as ${Variable_Name} in file name.
You should notice the system information:
Please remember that the variables you define with this step can't be used in this transformation. This is simply because all steps in a transformation run in parallel without a certain order of execution.
As alternative correct usage, you can set variables you want
to use in the first transformation of a job
在集合的形式,你可以使用变量美元variable_name } {在文件名。你应该注意到系统信息: 请记住,这一步你定义的变量不能用在这个转型。这是因为在一个转换并行运行,没有一定的顺序执行的所有步骤。 作为替代的正确使用,你可以设置变量,要使用在第一份工作的转型
本文翻译自StackoverFlow,英语好的童鞋可直接参考原文:5104人阅读
Kettle(14)
对于ETL参数传递是一个很重要的环节,因为参数的传递会涉及到业务数据是如何抽取。下面我为大家举例一个简单的需求。
需求说明:需要抽取昨天的数据装载到目标表中。
参数作用域?
答:Kettle中参数大致可分为两类:一类是全局参数,一类是局部参数。
参数如何定义?
A:全局参数定义是通过当前用户下.kettle文件夹中的kettle.properties文件来定义。定义方式是采用键=值对方式来定,如:start_date=
注:在配置全局变量时需要重启Kettle才会生效。
B:局部参数变量是通过“Set Variables”与“Get Variables”方式来设置。
注:在“Set Variables”时在当前转换当中是不能马上使用,需要在作业中的下一步骤中使用,大家可以思考下什么时候用到“Set
Variables”,什么时候用到“GetVariables”
参数使用优先级顺序:全局变量--&局部变量--&本身变量
参数如何使用?
答:Kettle中参数使用方法有两种:一种是%%变量名%%,一种是${变量名}。这两种方法变量数据类型都是数字类型。
注:在SQL中使用变量时需要把“是否替换变量”勾选上,否则无法使变量生效。
了解了这些参数概念后,我们需要使用工具实现需求。
创建相应的参数变量设置转换(Set_Param.ktr)与数据流抽取转换(RotKang_Test01.ktr)。
问:通过什么方式来获取昨天日期作为参数?
答:我们可以通过“获取系统信息”组件获取昨天日期,再通过字段选择转换成yyyy-mm-dd格式,最后设置成变量,设置参数变量为${YESTERDAY}。如下图:
获取相关的日期参数,昨天日期。
由于获取日期是到时分秒,通过字段选择转换成年月日格式。
设置参数,点确定时会提示大致意思是“设置的参数不能在当前转换中使用”。
由于数据流抽取(RotKang_Test01.ktr)转换上几弹已经完成,但是还没有设置参数使用,设置参数后如下图:
注:在使用参数时需要勾选“替换SQL语句里的变量“
3、最后使用Job把整个流程串连起来,如下图:
最后测试RotKang_Test.kjb作业运行结果。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:56834次
排名:千里之外
原创:32篇
评论:31条当前位置: >
使用Kettle增量抽取MongoDB数据实践
发布时间:
& 作者:本站编辑 &
浏览次数:
摘要: 需求: 增量抽取MongoDB数据并加载到MSSQL 由于不能使用关系型数据库的自定义SQL, 所以主要遇到的问题有: 增量时间的查询和参数...
需求: 增量抽取MongoDB数据并加载到MSSQL
由于不能使用关系型数据库的自定义SQL, 所以主要遇到的问题有:
增量时间的查询和参数控制
ETL的批次信息和调用参数的写入
第一个问题的解决如下:
使用命名参数在Query页中进行过滤, 一开始会担心${}的引用方式会用Mongo的语法冲突, 测试后发现运行正常
第二个问题:
先为结果增加常量值, 如常量值固定则直接写死, 不固定的常量值先设置为空串, 在后面使用字符串替换组件传入命名参数, 最后用字段选择把空串的常量值移除
转载请注明本文出处:
我来说两句
友情链接:

我要回帖

更多关于 kettle sql 变量 的文章

 

随机推荐