kettle复杂实战例子github:点击前往


1. 需求说明

源库里有三张表,分别是cust(客户表),account(账户表),trade(交易表),现在需要在目标库的trade_all(交易详细表)里存储每一笔交易的详细信息。

2. 准备数据库

2.1 cust(客户表)

字段名

类型

说明

备注

custno

varchar

客户编号

 

custname

varchar

客户名

 

custid

varchar

客户证件号

 

custtype

varchar

客户类别

1:对公客户

2:对私客户

2.2  account(账户表)

字段名

类型

说明

备注

acctno

varchar

账户号

 

custno

varchar

客户编号

 

amt

double

余额

 

2.3 trade(交易表)

字段名

类型

说明

备注

tradeid

varchar

交易流水号

 

acctno

varchar

账户号

 

amt

double

交易金额

 

2.4  trade_all(交易详细表)

字段名

类型

说明

备注

tradeid

varchar

交易流水号

 

acctno

varchar

账户号

 

amt

double

交易金额

 

custno

varchar

客户编号

 

custname

varchar

客户名

 

custid

varchar

客户证件号

 

custtype_cn

varchar

客户类别解释

对公客户交易 / 对私客户交易

value_

varchar

交易解释

这是一笔对公客户发生的交易

/

这是一笔对私客户发生的交易

3. 创建转换

转换的最终流程图:

kettle 数据仓库机构 kettle数据库查询_etl

3.1 创建转换和DB连接

我为了方便,把所有表都放在一个库里,所以只了一个数据库连接,如果源数据库和目标数据库不同,就配置两个数据库连接。

注意点:这里没配置好会出现中文乱码问题,详见我之前的文章:解决kettle问题之中文乱码

kettle 数据仓库机构 kettle数据库查询_etl_02

3.2 trade表输入

新建表输入

得到trade表里的所有数据。

kettle 数据仓库机构 kettle数据库查询_字段_03

3.3 account表查询

新建数据库查询

根据trade表里的acctno,去查account表

关键字段比较是acctno,查询返回字段是custno

kettle 数据仓库机构 kettle数据库查询_字段_04

3.4 cust表查询

新建数据库查询

根据account表里的custno,去查cust表

关键字段比较是custno

kettle 数据仓库机构 kettle数据库查询_数据库_05

3.5 根据客户类型,在字段里写入对应的语句

3.5.1 过滤记录

新建过滤记录

过滤出对公客户和对私客户。

kettle 数据仓库机构 kettle数据库查询_字段_06

3.5.2 对公客户和对私客户

下面以对公客户为例,对私客户就是把 公 改私。

新建javaScript代码

kettle 数据仓库机构 kettle数据库查询_kettle 数据仓库机构_07

新建增加常量

kettle 数据仓库机构 kettle数据库查询_kettle 数据仓库机构_08

3.6 trade_all表插入 / 更新

新建插入/更新

关键字段比较 tradeid

kettle 数据仓库机构 kettle数据库查询_etl_09

至此,多表联合查询实战就结束了,例子的地址在最上方。