Kettle系列教程-第五章:变量/参数

Author Avatar
山小杰 7月 30, 2018
  • 在其它设备中阅读本文章

本系列教程基于Kettle 8.1(pdi-ce-8.1.0.0-365)。大部分内容同样适用于Kettle 7.x版本。
章节目录:

本章说明

Kettle的参数、变量功能是一个很强大也很好用的一个功能,没有使用这个功能的流程都是死的,是没有灵魂的,因为没有通用性。比如我们可以把数据库连接信息配置成参数,在调用作业的时候动态传入,即可做到在只有一个作业流程的情况下对多个同类数据库执行同样的数据处理流程。
启动作业或者转换时初始化的叫做参数,是在调用作业或者转换的时候传入的;作业或者转换执行过程中数值会变动的某些数据,就叫做变量,是在流程内部配置的。

参数的配置与使用

作业、转换的参数用法相同,以转换为例,参数的配置是在转换设置 -> 命名参数标签页配置的。转换设计器空白处双击鼠标左键或者右键菜单 -> 转换设置或者快捷键Ctrl + T即可打开转换设置窗口。这里我们把数据库连接信息配置成参数,并填上默认值:
img
然后拖出一个表输入组件,双击表输入组件图标即可配置表输入信息:
img
这里选择新建数据库连接,连接信息配置如下(详细看图):
img
配置完成以后,点击测试按钮,连接成功,说明参数配置使用成功:
img
测试SQL执行:
img
可以看到,SQL语句中也是可以使用参数的,但是必须要勾选下面的替换SQL语句中的变量选项,这里我们在转换参数中添加一个参数[table_name]:
img
回到表输入组件,写上SQL,预览:
img
执行转换时传参:
img

变量的配置与使用

首先把上面的【转换参数示例】修改一下,就改一下表输入中的SQL语句,查询出mysql中已创建的用户名,【记录数量限制】填为1表示只取第一条数据:
img
然后从【作业】分类下面拖出【设置变量】组件,连接到表输入后面,双击打开:
img
点击右下角的【获取字段】按钮,会自动读取到【表输入】步骤传过来的字段,变量活动类型默认为在跟作业中有效
img
点击【确定】的时候会弹出一个提示,意思是设置的变量在当前转换中是不能使用的,只能在后面的步骤中使用:
img
变量设置完成,保存该转换,新建一个作业【作业变量示例】,组成下图中的流程:
img
双击【转换】组件,配置转换步骤:
img
双击【写入文件】组件,配置该步骤,其中文件名使用了变量USER,变量的使用方式与参数相同,也是${变量名},英文半角字符:
img
保存作业,运行查看效果,可以看到桌面上多出了一个root.txt文件,文件内容与我们配置的相同:
img
查看下面的运行日志,还可以看到设置变量时的日志记录:
img

本章完!
下一章:转换流程-输入组件