在Pentaho中创建转换:将多输入表列值合并至同一表同列
我刚好在Pentaho里实现过一模一样的需求,给你一步步拆解怎么操作:
在Pentaho中合并多表列到同一输出表的实现步骤
1. 新建转换并添加输入数据源
打开Pentaho Spoon,新建一个转换任务。然后添加两个表输入组件:
- 第一个表输入:配置好数据库连接,编写SQL查询获取第一个产品表的数据,比如:
SELECT id, name FROM product_table_a - 第二个表输入:同样配置对应连接,查询第二个产品表:
SELECT id, name FROM product_table_b
注意:如果两个表的字段名不一致(比如一个叫
product_name一个叫name),一定要用AS把字段名统一,比如SELECT id, product_name AS name FROM product_table_b,这样后续合并才不会出问题。
2. 合并两个数据流
添加一个**追加记录(Add Rows)**组件,把两个表输入的输出箭头都拖到这个组件上。这个组件的作用就是把两个独立的数据流“叠”到一起,让所有来自两个表的id和name行都进入同一个数据流中。
你可以右键点击这个组件,选择“预览”,先确认合并后的数据流是不是符合预期——所有来自两个表的记录都应该出现在预览结果里,字段名也保持一致。
3. 输出到目标表
添加一个表输出组件,连接到“追加记录”组件的输出端:
- 配置目标数据库的连接,选择要输出的目标表(如果表还没建,可以先在数据库里创建好结构,要有
id和对应的名称列,比如merged_name) - 在字段映射界面,把数据流里的
id映射到目标表的id字段,name映射到目标表的名称列。
额外优化建议
- 如果需要去重(比如两个表可能有重复的
id),可以在“追加记录”之后加一个排序记录组件(按id排序),再接着加一个删除重复记录组件,只保留唯一的id行。 - 测试阶段可以先用文本文件输出组件代替表输出,把合并后的结果导出成CSV,确认数据没问题再写入数据库。
这样操作下来,两个输入表的对应列就会完美合并到目标表的同一列里啦!
内容的提问来源于stack exchange,提问作者Adil
相关产品推荐
相关产品推荐

