目录
一.数据准备
通过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表: