Kettle 设置和使用变量

使用场景:从数据库中获取上次执行时间,在之后的转换中使用这个时间。
Kettle Version : 7.1

1. 设置变量

  1. 新建一个转换,添加一个 输入 => 表输入作业 => 设置变量

  2. 修改 表输入 使其查询出想要的时间值

  3. 按住 Shift表输入 拖动到 设置变量

  4. 修改 设置变量

    • 字段名称:表输入 中查询出的字段名
    • 变量名:假设为 LastActionTime
    • 变量活动类型:相当于变量的作用域,有四个选项
      • Valid in the Java Virtual Machine
      • Valid in the parent job
      • Valid in the grand-parent job
      • Valid in the root job
    • Default Value
      • 如果 表输入 没有查询到结果时的默认值(这里设置为 2010/01/01 00:00:00
  5. 点击编辑区左上角的 Run 按钮运行转换

    如果变量的活动类型设置为 parent jobgrand-parent job 会由于找不到这个 job 而报错。

Kettle 入门

安装 Kettel

  1. 下载 Kettle 并运行 Spoon

    这里 下载 Kettle ,下载后解压并运行 data-integration 目录下的 Spoon.bat 就可以启动了。

  2. 新建 Repository(仓库)连接

    这里是设置保存 Kettle 数据(用户、转换作业 等)的仓库的连接的。

    Spoon 中创建 SqlServer 的数据库连接时报如下错误。

    Driver class 'net.sourceforge.jtds.jdbc.Driver' could not be found, make sure the 'MS SQL Server' driver (jar file) is installed.
    net.sourceforge.jtds.jdbc.Driver

    这个是由于缺少 jtdsjar 包导致的。从 这里 下载后放到 lib 目录下,再次启动 Spoon 就可以了。

    之后登录时又报这个错误,后来发现是由于数据库账户缺少建表的权限导致的。

    You don't seem to be getting a connection to the server. Please check the path you're using and make sure the server is up and running.

  3. 登录 Kettle

    默认的登录账户名和密码都是 admin 。首次登录时会创建 R_ 为前缀的一系列表。
    之后可以在 工具 => 资源库 => 探索资源库安全 标签中管理用户。

Kettle - Kitchen

最近在做 Kettle 的项目,所以整理了一下 Kitchen 命令相关的文档。

Kitchen 是用来运行通过 Spoon 创建的 作业(Job)的。

本文主要参考自官方的 Kitchen User Documentation

Kettle 使用 File Repository 时数据库连接共享的问题

由于使用 数据库仓库(Database Repository)开发时没法实现版本的管理,所以开发时使用了 文件仓库(File Repository)。

在发布运行时遇到了一个问题:数据库连接是存储在各个转换或作业里的,变更环境时需要修改所有的 作业(job)和 转换(transformation) 。
下面是当时使用的 kitchen 命令。