一.变量的类型
Kettle 的早期版本中的变量只有系统环境变量,新版本变量一般包括系统环境变量, “Kettle变量” 和内部变量三种系统环境变量的影响范围很广,凡是在一个 JVM下运行的线程都受其影响.1.环境变量
通过 set variables组件设置变量,范围可以是:JVM变量、作业变量、父作业变量、根作业变量。使用时通过${var}或%%var%%变量方式引用变量2.属性文件变量
在.kettle目录下的kettle.property文件中设置,可kettle中可以引用3.命令行参数(相当于位置参数)
命令行参数是指用pan执行转换时传入的参数,在sql中用可以用?占位,也叫位置参数 注意: 不管哪种参数都可以在sql中用${var}或者%%var%%表示二、变量的设置
1.设置环境变量
job: 编辑【设置变量】组件: 注意: 要注意一点:如果用转换封装变量,选择valid in the root job,则在job中无法使用这些变量。如果改成在JVM中生效则可以使用。 转换: 表输入: 案例可以参考博文《kettle环境变量的配置》2.设置属性文件变量
该属性文件位于 ${user.home}.kettle 下 例如:C:\Users\Administrator.kettle\kettle.properties 以window为例 编辑C:\Users\用户名.kettle目录下的kettle.properties文件,写入: customerNumber=124 然后重启spoon(kettle) 转换: 表输入:3.设置命令行参数变量
转换: 获取系统信息: 表输入:三.SQL查询中使用kettle变量
案例: 表输入步骤支持替换查询中的变量或参数,假设有一系列结构完全相关的表,分别是: mammals, birds, insects(动物、鸟、昆虫),可以使用kettle变量作为表的名称。 假设我们有一个变量,名称为:ANIMALS_TABLE,赋值为birds,我们设置“Replace Vaiables”选项选中。如果我们写下面的查询:SELECT name,population FROM ${ANIMALS_TABLE}
在执行一定被成功的替换成:
SELECT name,population FROM birds
如果设置变量的值为“mammals”或“insects”,则将动态查询不同的表。当占位符不能胜任是,使用变量技术可以帮助我们解决。示例的名称为variables.ktr,运行时不要忘了给parameter(命名参数)赋值进行测试。
四.变量和占位符一起使用
如果有必要,我们可以混合这两种技术;本示例中使用变量作为表名词,同时使用占位符作为前面步骤的输入值。示例文件variables_and_placeholders.ktr。SELECT name, population FROM ${ANIMALS_TABLE}WHERE population > ?
扩展学习
(kettle环境变量的配置:永久+临时)首先我们有两种方式去改变这个环境变量,一种是永久性,一种是临时性,
一、 永久性配置
永久性是在我们的C盘的,用户,用户名称下面的.kettle文件夹里面的kettle.properties
配置基本上就是kv形式的 ,所以就没那么麻烦。
前面就是我们的 k也就是需要代替的 IP地址
截图示意一下、
ok这个配置就完成,保存退出.
重启spoon!务必重启!
我们重启之后,再去建立与数据库的链接 ,那么这个问题 ,解决了,
二、临时性配置
下面是关于 一次性的配置,比较轻松简单,但是调用都是一样的
点开后有一个 配置,配置名称和值
配置后记得重启,基本上都是属于配置 k-v的,所以这个问题就很容易来说
具体调用环境变量,可以在上面我写的
${ }
%% %%
这两种基本都ok。
更多的kettle和etl学习笔记:https://blog.csdn.net/zzqhello2018/category_9231127.html如需转载请保留本文出处: https://www.zhe94.com/909.html