一、Kettle的变量
Kettle可以在作业和转换中设置变量,变量设置不同作用范围也不同。
作业和转换中设置变量的差异:
作业中设置变量当前作业就可以使用。但是转换中设置变量,使用${}当前转换是拿不到的。需要在子转换或者同作业调用链转换可以获取。(这是一个巨坑)
Kettle变量对应着四个不同的作用域范围”s”ystem, “r”oot, “g”randparent, “p”arent。
变量类型选项 | 作用域 | 作用域范围说明 |
---|---|---|
在JVM中有效(Java Virtual Machine) | s | 在一个Java虚拟机下运行的线程都生效。 |
在根作业中有效(root iob) | r | 在根作业下运行的都是生效的。 |
在父作业中有效(grand-parent job) | g | 在当前作业的父作业下都是生效的。 |
在当前作业中有效(parent job) | p | 在当前作业下是生效的,当前作业的父作业不生效。 |
变量范围示意图:
二、作业设置变量
从上图可见,变量有效范围设置【当前作业有效】,当前作业的父作业使用${}获取的是历史变量,没有获取到最新的。如果没有历史变量就什么都获取不到。
三、转换设置变量
从上图可见,变量有效范围设置【Valid in the Java Virtual Machine】,当前转换使用${}获取不到最新的。其他的都可以。
四、JS脚本设置变量
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1003805540@qq.com