Kettle变量设置与使用详解

Kettle变量设置与ETL应用详解

我们来详细讲解一下 Kettle(现称为 Pentaho Data Integration, PDI)中的变量。变量在 PDI 中是一个非常重要且强大的功能,它允许你动态地传递值,使你的 ETL 作业和转换更加灵活和可配置。


一、Kettle (PDI) 变量的核心概念

1. 变量的作用
  • 参数化配置:将硬编码在转换或作业中的值(如文件路径、数据库连接信息、日期范围、阈值等)替换为变量,使得无需修改代码即可改变其行为。
  • 在作业和转换间传递数据:父作业可以设置变量,子转换或作业可以读取这些变量,实现数据流和控制流的结合。
  • 环境隔离:为开发、测试、生产等不同环境使用不同的变量值(通过配置文件或命令行设置),实现“一次开发,多处运行”。
2. 变量的层级(作用域)

这是理解 PDI 变量的关键。变量的值遵循一个特定的查找顺序(由近及远):

  1. Root(根变量) / JVM 变量:通过 -D 参数在启动时传递给 JVM 的变量,作用域最广,整个 PDI 进程都可用。例如:-Dmy.app.home=/opt/app
  2. 父作业(Parent Job):在作业中通过 “设置变量” 步骤设置的变量。这些变量对其所有子对象(子作业或子转换)可见。
  3. Grand-parent Job(祖父作业):如果存在多层嵌套,变量会逐级向下传递。
  4. 当前作业(Current Job):在作业内部设置的变量。
  5. 当前转换(Current Transformation):在转换内部通过 “设置变量” 步骤设置的变量。其作用域仅限于该转换的后续步骤
  6. 内部变量(Internal Variables):PDI 内置的变量,如 ${Internal.Transformation.Filename}(当前转换文件名)、${Internal.Job.Name}(当前作业名)、${date}(系统日期)等。

重要规则:如果一个变量在多个层级被定义,PDI 会优先使用它找到的第一个值(从最接近当前上下文的作用域开始查找)。例如,如果父作业和转换都设置了同名变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值