Pentaho Data Integration数据转换实例

前面分别简单介绍了kettle(Pentaho Data Integration)7.1版本的安装和Repository设置
pentaho-kettle是可视化的数据同步工具,源码地址https://github.com/pentaho/pentaho-kettle
ETL工具kettle7.1
Pentaho Data Integration的Repository设置
下面主要介绍从数据库1的A表数据以全表对比的方式同步到数据库1的B表【数据库连接是任意的,也可以是不同的数据源】
图形用户界面Debug和执行转换
使员工命令行调用pan ktr文件

DEMO整体概览

编辑转化保存后会生成DEMO测试.ktr文件
创建的两个数据源会生成localhost_0a.kdb和localhost_0b.kdb两个文件

image
image
image

DB数据源

0a和0b是同一个数据库,不同的数据表

image
image
image
image

创建两个输入

0a是不断变化的数据
0b是结果表
将0a中的数据同步到0b中

image
image

进行数据合并

将两个数据源输入的数据进行合并对比【全表对比,数据量大时影响同步效率】
Debug查看对比结果

image
image
image
image
image

添加和修改0a中的数据
查看对比结果
deleted changed new

image

过滤合并结果

对于diff为identical的数据不做处理,新旧数一致,没有变化

image

添加判断条件

对deleted changed new进行CASE处理,分别对于三个输出,DEFAULT是空操作

image

删除更新和插入

需要注意的是,在进行插入和更新时,字段映射中去掉diff中间字段

image
image
image
image

执行转换

图形用户界面执行和命令行执行

image
image
image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
sh pan.sh -file /Users/shaozhipeng/Desktop/kettle_repository/DEMO测试.ktr

......
2017/12/10 22:53:39 - Pan - 开始运行.
2017/12/10 22:53:40 - DEMO测试 - 为了转换解除补丁开始 [DEMO测试]
Dec 10, 2017 10:53:41 PM org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be /marketplace
2017/12/10 22:53:41 - 输入0b.0 - Finished reading query, closing connection.
2017/12/10 22:53:41 - 输入0a.0 - Finished reading query, closing connection.
2017/12/10 22:53:41 - 输入0a.0 - 完成处理 (I=9, O=0, R=0, W=9, U=0, E=0)
2017/12/10 22:53:41 - 输入0b.0 - 完成处理 (I=9, O=0, R=0, W=9, U=0, E=0)
Dec 10, 2017 10:53:41 PM org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be /lineage
Dec 10, 2017 10:53:41 PM org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be /i18n
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/shaozhipeng/Desktop/data-integration/launcher/../lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/shaozhipeng/Desktop/data-integration/plugins/pentaho-big-data-plugin/lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2017/12/10 22:53:41 - 合并记录.0 - 完成处理 (I=0, O=0, R=18, W=9, U=0, E=0)
2017/12/10 22:53:41 - 过滤记录.0 - 完成处理 (I=0, O=0, R=9, W=0, U=0, E=0)
2017/12/10 22:53:41 - Pan - 完成!
2017/12/10 22:53:41 - Pan - 开始=2017/12/10 22:53:39.812, 停止=2017/12/10 22:53:41.809
2017/12/10 22:53:41 - Pan - 1 秒后处理结束.
2017/12/10 22:53:41 - DEMO测试 -
2017/12/10 22:53:41 - DEMO测试 - 进程 输入0a.0 成功结束, 处理了 9 行. ( 9 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 合并记录.0 成功结束, 处理了 18 行. ( 18 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 输入0b.0 成功结束, 处理了 9 行. ( 9 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 判断条件.0 成功结束, 处理了 0 行. ( 0 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 删除.0 成功结束, 处理了 0 行. ( 0 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 更新.0 成功结束, 处理了 0 行. ( 0 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 空操作 (什么也不做).0 成功结束, 处理了 0 行. ( 0 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 过滤记录.0 成功结束, 处理了 9 行. ( 9 行/秒)
2017/12/10 22:53:41 - DEMO测试 - 进程 插入.0 成功结束, 处理了 0 行. ( 0 行/秒)
邵志鹏 wechat
扫一扫上面的二维码关注我的公众号
0%