Kettle实战100篇 第25篇 作业核心对象设置变量组件

2019/08/20 Kettle实战 浏览

我们在很多场景下都需要用到设置变量组件,比如在分页查询数据时,然后分批次写入数据时,都需要事先定义好变量,一般作为作业中起始组件,设置变量的作业举足轻重,这考验你在一个完成的ETL过程中的逻辑能力,你的ETL是否能正常完美的执行,和开始设置的变量有很重要的关系.

作业中的设置变量组件如下:

我们可以通过设置变量组件中的变量以.properties文件的方式引入

可以指定属性文件名为F:\bak\testkettlevariable.properties

然后在指定我们的变量名范围,那么我们接下来的整个ETL过程中都可以使用该变量

使用文件的方式引入变量如下:

我们在配置文件中设置我们的变量,如下图:

我们的JavaScript脚本中打印出变量,脚本内容如下:

var name=parent_job.getVariable("TEST_NAME");

var version=parent_job.getVariable("TEST_VERSION");

var subject="自定义日志输出";
//实例化工厂类
var logFactory = new org.pentaho.di.core.logging.LogChannelFactory();
//实例化日志channel对象
var log= logFactory.create(subject);
//日志输出
log.logMinimal("name:"+name+",version:"+version);

true;

脚本内容很简单,获取我们在文件中定义的变量,然后通过日志输出,最后运行,控制台打印如下:

因为我们是在脚本中使用,使用的是Kettle的内置对象parent_jobgetVariable方法拿到当前ETL中的变量,如果在后面组件中,可以是拥有$符号的输入框中通过${variable_name}来引用,或者使用%variableName%

另外,我们在组件中也可以看到组件的作用范围,主要有四种:

  • 当前作业有效:代表的是当前作业
  • 在JVM中有效:Kettle由于是Java编写,而Java程序运行是在JVM中运行的,因此如果设置在JVM中有效则相当于是全局有效,因为整个ETL过程都是在JVM平台上作用的
  • 在父作业中有效:父作业中有效
  • 在根作业中有效:根作业有效

站内搜索

    Table of Contents