【KNIME案例】Excel多工作簿通过关键字段联结

背景:Excel表格中含有多个工作簿(如例子中的“员工职位信息表”,“员工个人信息表”,“部门信息表”等等),它们之间含有相同名称的一个或者多个关键字段,需求是将这样的若干表格,依次按照关键字段进行联结,最终形成一张完整信息的大表。类似的需求,在数据库表格操作中是十分普遍的,一般使用sql语句中的join功能实现,可以进行类比。

方案:建立KNIME定时任务工作流,固化Excel多个工作簿的联结流程,自动完成表格拼接合并任务。由于表格是依次进行联结操作的,下一步的操作建立在上一次联结的表格基础之上,属于迭代循环操作,所以方案中将使用递归循环节点(Recursive loop)来完成这样的联结操作。在循环的每一步,主要的思路就是对于上一步已经联结好的表格,和新读取的下一张Excel工作簿表格,进行列名的比对,找出它们的列名交集传递到KNIME的joiner节点当中,对上述两个表格完成联结,形成新的表格。这样的步骤重复下去,就可以将Excel当中的多个工作簿,依据关键字段,联结成一张大表。

本例(视频介绍请移步B站,搜索Up:“星汉长空”,视频:KNIME案例(265)联结多工作簿,具体步骤介绍请参考视频,下面仅简要介绍关键的步骤及涉及到的节点功能):

步骤1. 在KNIME中拖入Read Excel Sheet Names节点,双击设置读取文件的路径,选择“人员信息表”Excel文件,读取Excel文件的路径以及其中包含的所有工作簿名称。

步骤2. 为了循环遍历Excel文件中的工作簿,需要加入递归循环节点(Recursive Loop Start),且应该为其增加一个Recursion端口(Add Recursion port),因为这里不仅要传递Excel工作簿的名称列表,还需要将上一次联结好的表格传入。

步骤3. 为了循环读取并获得Excel文件中当前的工作簿,需要对Recursive Loop Start端口上的Excel工作簿的名称列表进行行分割操作,加入Row Splitter节点,设置只取其第一行,这样第一行的Excel路径信息和工作簿名称就可以用于读取当前的Excel工作簿;而剩余的部分,将传递到Recursive Loop End节点上,为下一次取Excel的工作簿做好准备。

步骤4. 拖入Table Row to Variable节点,将Row Splitter节点产生的当前Excel路径信息和工作簿名称转变为变量,再拖入Excel Reader节点,在路径设置里选择Excel路径信息变量,选择按名称读取Excel工作簿,并将工作簿名称变量传入,即可获得Excel当前工作簿的数据内容。

步骤5. 对步骤3,Recursive Loop Start端口上的上一步联结好的数据表格,和步骤4,新读取的Excel工作簿表格,都进行列名的提取操作,然后获取它们的交集部分,转变为列表,再转变为变量。

步骤6. 拖入Joiner节点,对步骤5中的两个表格进行联结(join)操作,联结依据的关键字段,就是步骤5形成的列名列表变量。

步骤7. 执行工作流,在循环过程中,依次对Excel文件中的多个工作簿进行联结操作,逐步形成了一个大的信息表格。


解释1. 何为KNIME?KNIME数据分析平台是一款强大开源的数据挖掘软件平台,可以固化数据处理的流程,在人与人,人与机器之间进行传递。

解释2. 数据处理任务固化成工作流有什么好处?上面建立的Excel多工作簿表格联结工作流,并不限制工作簿的数量,也没有手动设置工作簿间联结所依据的关键字段的名称,都是自动化完成的。这样的工作流固化的操作流程,减少了人工参与所带来的风险,确保了数据处理质量的一致性,也可以形成人员之间,人与机器之间的有效协同配合,大大加快需求解决的效率,代表了新的方法论,是一种新的组织模式的载体;且与编程实现功能有所不同,具有传递流程思想的作用,便于共享、维护、复用、拓展。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值