6.2不一致的数据转换

目录

一.数据准备

二.建立转换添加控件 

​编辑

三.配置控件

        1.配置“表输入”控件

         2.配置“表输入2”控件

        3.配置“表输出3”控件

        4.配置“字段选择”控件 

        5.配置“记录集连接”控件

        6.配置“字段选择2”控件

        7.配置“插入/更新”控件

四.配置完成运行


一.数据准备

        通过Kettle工具将对数据表company进行不一致数据的转换操作,即通过与供货商提供的标准价格表进行比较,得出不一致数据,从而进行修改,最终输出到数据表company中。

suppilers表:

  

create table `suppliers` (
	`id` INT,
	`brand` varchar (150),
	`model` varchar (150),
	`unitPrice` varchar (150)
); 
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('1','华为','华为nova 5 Pro(8GB/128GB/全网通)','2999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('2','三星','三星GALAXY Note 10+(12GB/256GB/全网通/5G版)','7999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('3','OPPO','OPPO Reno2(8GB/128GB/全网通)','2999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('4','华为','华为Mate30(8GB/128GB/全网通/5G版/玻璃版)','4999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('5','OPPO','OPPO Reno 10倍变焦版(8GB/256GB/全网通)','4299');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('6','vivo','vivo NEX 3(8GB/256GB/全网通/5G版)','5698');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('7','vivo','vivo NEX 3(8GB/128GB/全网通)','4998');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('8','vivo','vivo iQOO Pro(8GB/128GB/5G全网通)','3798');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('9','小米','小米9(8GB/256GB/全网通)','2999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('10','华为','华为Mate 20 X(8GB/256GB/全网通/5G版)','6199');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('11','OPPO','OPPO R17(8GB RAM/全网通)','2499');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('12','苹果','苹果iPhone 11 Pro Max(6GB/64GB/全网通)','9599');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('13','三星','三星Galaxy S10+(8GB RAM/陶瓷版/全网通)','7499');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('14','苹果','苹果iPhone 11(4GB/128GB/全网通)','5999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('15','苹果','苹果iPhone 11 Pro(6GB/256GB/全网通)','9999');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('16','华为','华为P30 Pro(8GB/128GB/全网通)','4988');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('17','苹果','苹果iPhone 11(4GB/256GB/全网通)','6799');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('18','小米','小米9 Pro(8GB/256GB/全网通/5G版)','3799');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('19','三星','三星GALAXY Note 10(8GB/256GB/全网通)','6599');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('20','苹果','苹果iPhone 11(4GB/64GB/全网通)','5499');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('21','vivo','vivo X27 Pro(8GB RAM/全网通)','3598');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('22','苹果','苹果iPhone 11 Pro(6GB/64GB/全网通)','8699');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('23','华为','华为Mate30 Pro(8GB/128GB/全网通)','5799');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('24','小米','小米MIX 3(6GB RAM/全网通)','2299');
insert into `suppliers` (`id`, `brand`, `model`, `unitPrice`) values('25','华为','华为Mate30 Pro(8GB/256GB/全网通/5G版/玻璃版)','6899');

二.建立转换添加控件 

三.配置控件

        1.配置“表输入”控件

                双击进入配置页面,建立数据库连接,并输入SQL语句,如下图:

                   

                 SQL语句:

SELECT brand,model FROM company c2 
WHERE c2.id 
NOT IN 
(SELECT c1.id FROM suppliers s1 
JOIN company c1 ON s1.brand = c1.brand 
AND s1.model = c1.model 
AND s1.unitPrice=c1.unitPrice);

         2.配置“表输入2”控件

                双击进入配置页面,具体操作如下:

                在SQL框中编写SQL语句,查询出不一致数据在数据表suppliers中的全部信息;在“从步骤插入数据”的下拉框选择“表输入”步                骤;勾选“执行每一行”处的复选框,用于将表输入控件流中的数据放入到SQL语句对应的参数位置,通过条件查询与数据表                        suppliers中的数据进行匹配,具体配置如图所示。

                

        3.配置“表输出3”控件

                双击进入配置页面,配置如下图:

                     

                SQL语句:

SELECT id,brand,model,unitPrice FROM company c2 
WHERE c2.id NOT IN 
(SELECT c1.id FROM suppliers s1 
JOIN company c1 ON s1.brand = c1.brand 
AND s1.model = c1.model 
AND s1.unitPrice=c1.unitPrice);

        4.配置“字段选择”控件 

                双击进入配置页面,在选择/修改选项字段名称中加入表输入2控件流中的所有数据字      段,将字段unitPrice改名为unitPrice1,             如下图:

                   

                点击移除选项,添加字段id,对id字段进行移除,如下图:

                    

        5.配置“记录集连接”控件

                双击进入配置页面,在第一个步骤选项中选择字段选择,在第二个步骤选项中选择表输  入3,连接类型选择RIGHT OUTER,            在第一步骤的选择字段和第二步骤的选择字段中都添加brand、model字段,如下图:

                    

        6.配置“字段选择2”控件

                双击进入配置页面,在选择/修改选项中添加字段unitPrice1、id,如下图:

                   

        7.配置“插入/更新”控件

                双击进入配置页面,在目标表处浏览添加目标表company,在下方用来查询的关键字处点击右侧获取字段,获取字段id,在下              方更新字段,点击右侧获取和更新字段,用于添加需要更新的字段unitPrice,如下图:

                    

四.配置完成运行

                运行结果:

                

                company表:

                

 

 

 

 

 

 

                

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值