Kettle之多表联合查询实战

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


1. 需求说明

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

2. 准备数据库

2.1 cust(客户表)

字段名类型说明备注
custnovarchar客户编号 
custnamevarchar客户名 
custidvarchar客户证件号 
custtypevarchar客户类别

1:对公客户

2:对私客户

2.2  account(账户表)

字段名类型说明备注
acctnovarchar账户号 
custnovarchar客户编号 
amtdouble余额 

2.3 trade(交易表)

字段名类型说明备注
tradeidvarchar交易流水号 
acctnovarchar账户号 
amtdouble交易金额 

2.4  trade_all(交易详细表)

字段名类型说明备注
tradeidvarchar交易流水号 
acctnovarchar账户号 
amtdouble交易金额 
custnovarchar客户编号 
custnamevarchar客户名 
custidvarchar客户证件号 
custtype_cnvarchar客户类别解释

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

value_varchar交易解释

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

/

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

3. 创建转换

转换的最终流程图:

3.1 创建转换和DB连接

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

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

3.2 trade表输入

新建表输入

得到trade表里的所有数据。

3.3 account表查询

新建数据库查询

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

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

3.4 cust表查询

新建数据库查询

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

关键字段比较是custno

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

3.5.1 过滤记录

新建过滤记录

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

3.5.2 对公客户和对私客户

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

新建javaScript代码

新建增加常量

3.6 trade_all表插入 / 更新

新建插入/更新

关键字段比较 tradeid

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值