PDI(Pentaho Data Integration,或者Kettle)是一款开源的ETL工具,可以用它来对数据进行抽取、清洗和转换操作,从而获得我们想要的数据。
Kettle 下载

当前最新版本是v7.1,点击绿色按钮即可跳转到sourceforge网站下载,这里默认的提供的下载版本就是最新版的,如果要选择历史版本可以点击这里选择合适的版本下载。
Kettle启动
Kettle没有安装包,绿色版无需安装,下载完成后会得到一个zip压缩包,解压后会生成一个文件夹:

这个文件夹就是kettle的主目录,打开文件夹可以看到Kettle的启动脚本和快捷方式。Windows系统点击Spoon.bat
即可启动,类Unix系统需通过命令的形式启动,我们切换到Kettle主目录,然后执行spoon.sh
脚本,如下:
cd data-integration
./spoon.sh
启动完成界面:

运行第一个转换
在开始第一个转换之前我们还得做一些准备工作,因为选择连接的数据库是MySQL,所以需要MySQL的连接驱动,Kettle默认是没有的,至少在7.1还没,所以需要去添加一个mysql-connector-java-***.jar
,把他放在libswt的对应操作系统目录下:

osx64目录下

重新启动kettle。
kettle分转换和作业两种,转换是作业的子集,一个作业由许许多多转换构成的,双击左侧主对象树下面的转换即可添加一条转换,先保存下:

然后双击ts1下的DB连接,填写连接名称,连接类型选择MySQL,连接方式按需选择,jdbc应该没什么好说的,如果选择jndi就要多提一句,本地测试的话需要编辑Kettle主目录下的simple-jndi/jdbc.properties
配置,如下:

这里的填的名称都是/前的名字,之后点击测试按钮可以检测配置是否正确。
配置完数据库连接之后就可以真正开始写一个转换了,我们选择核心对象,这里面有许多的转换组件,且帮我们分好了类别,我们可以拖拽他们到主面板上:

以上是一个转换示例,一下做一个简单说明
- 清空item表:主要是执行一条SQL语句:

- 自定义常量数据:定义一些需要用到的数据,这个不是必须的:

3.从bas_item表抽取数据:

- 过滤记录:过滤一些无效数据

- 去除不需要字段:这个功能比较实用,可以给字段改名,删除字段,修改字段格式等

- JavaScript代码:一些简单的JavaScript代码,主要还是用来做数据辨别的

- 更新item维度表:把抽取出来的数据用来更新另一张表

最后,可以运行这个示例来测试了:

顺便提一下这里可以添加一些运行转换会用到的变量,点击启动即可:

执行成功会在对应步骤的右上角显示成功标记。
以上。
网友评论