详解合并查询的 6 种联接方法

详解合并查询的 6 种联接方法

首页休闲益智看看合成更新时间:2024-04-29

用心,做专业内容。点个关注,我们将持续为您带来更多专业内容!

本文由生产力工坊原创发布,可在公众号:生产力工坊 查看更多新鲜资讯。

在使用 Excel 或 Power BI 中的 Power Query 转换数据时,你是否也产生过这样的疑问:合并查询中,当根据一列或多列的匹配值将两张表联接在一起,联接种类中的左外部、右外部、完全外部、内部、左反、右反、这 6 个选项分别代表什么含义,在实际的数据合并查询时又该如何做出选择?

今天,就让我们来看看这 6 种不同的合并查询联接方法。

左外部联接

Power Query “合并”对话框中的默认联接类型是左外部联接,该联接将保留左表中的所有行,右表与左表一致的数据会显示出来,不一致的或没有匹配的数据会以 null 填充。

例如,这里有一张商品表和一张品类表,其中:

由于在商品表中缺少与之对应的商品品类,因此可以用合并查询将类别联接在一起。

选择“商品表”查询,单击“主页”选项卡下的“合并查询”命令,在展开的下拉菜单中选择“将查询合并为新查询”。当然你也可以选择“合并查询”,基于原表基础上完成合并。

接下来,在“商品表”中选择“种类编码”列。同时,在“品类表”中选中“品类编码”,联接种类保持默认的“左外部”。

这样就生成了一个新的合并查询,单击“品类表”列右侧的深化按钮,展开“品类表”字段。

在这里你不仅可以指定在合并查询中展开的字段,还可以选择是否需要在展开的字段名称中添加前缀。

现在,可以看到合并表中合并进来的数据列标题都带有“品类表”这个前缀。

通过对比我们可以看到,左外部联接就是保留商品表中的所有商品记录,获取品类表中与商品表中品类编码相匹配的品类名称,并以 null 值填充不匹配的记录信息。

右外部联接

右外部联接与左外部联接完全相反。该联接将保留右表中的所有行,左表与右表中一致的数据会显示出来,不一致的或没有匹配的数据会以 null 填充。

我们依然使用上述的“商品表(左表)”和“品类表(右表)”,希望能够查询并展示每个品类下都包括哪些商品。

基于该需求,“品类表”中的记录应该完全保留。

选择“商品表”建立新的合并查询,最为关键的一步,在“合并”对话框中这次选择“右外部”联接。

此时,在新生成的合并查询中,就会看到所有品类对应的商品情况。并且,如果一个品类下有多种商品,则会生成多条匹配记录,而没有匹配的品类会以 null 填充。

完全外部联接

Power Query 合并查询中的“完全外部联接”会将左表与右表的数据全部显示出来,只做查询后的联接而不删除数据,同样将两表中不匹配的部分以 null 值填充。

例如,这里有一张“人员表”和一张“订单表”,其中:

现在,我们不仅希望列出所有销售人员的订单,还希望看到所有订单的分配情况。基于分析目的需要引入两张表中所有记录,这时“完全外部联接”可以帮助我们实现所有人员及所有订单的分析。

选择“人员表”查询,单击“主页”选项卡下的“合并查询”命令,在展开的下拉菜单中选择“将查询合并为新查询”。

在“人员表”中选择“ID_P”列。同时,在“订单表”中选中“ID_P”,联接种类为“完全外部”。

现在,你会看到人员表中三位销售人员的订单完成情况,其中员工编号为“TJ2100372”的销售人员还没有完成任何订单,而在所有订单中“O34764”的订单也还未进行分配。

内部联接

内部联接,不像完全外部联接那样会将两表中数据全部显示,而是仅列出两表中完全匹配的数据,与完全外部联接相反。

例如,在下面的“人员表”(左表)和 “订单表”(右表)中分析哪些销售人员完成了订单。这就要找出与产生销售的人员匹配的订单记录,而没有完成销售的记录是不需要在查询中列出的。

这时,在合并查询中,内部联接完全可以实现对数据的合并要求。并且,在对话框底部也会提示你两表中满足条件的记录数。

由此看出,员工编号为“TJ2100371”和“TJ2100373”的两位员工分别完成了两笔订单,在结果中共显示出 4 条记录。而员工编号为“TJ2100372”的员工由于在订单表中没有匹配的订单,所以不会出现在结果中。

左反联接

Power Query 中的左反联接只显示与右表不匹配的左表数据。换句话说,该联接只引用右表中没有匹配记录的左表数据,作为输出结果列出在查询中。

在人力资源部门工作的同事经常需要对公司的人员异动情况进行统计。如下是某公司的员工信息统计表。

现在,我们需要列出 2023 年离职员工信息。

如果要找出 2023 年离职员工,就要找到在 2022 年花名册中存在,却没有出现在 2023 年花名册中的员工。

在查询返回的结果中列出了 2023 年离职的三名员工信息。回到员工花名册中,不难发现,这三名员工仅出现在 2022 年员工名单中,而未在 2023 年员工记录中找到他们。

右反联接

不难理解,右反联接其实和左反联接是完全相反的。该联接只会显示与左表不匹配的右表数据

例如,在员工花名册中,列出 2023 年入职的员工信息。这就要找出 2022 年花名册中不存在,而仅出现在 2023 年花名册中的记录。

其实,只需在合并查询中,将联接类型变更为“右反”,就可在合并结果中找出 2023 年入职员工。

对比员工花名册,其中员工编号为“TJ2100383”、“TJ2100384”、“TJ2100385”的三位员工没有出现在 2022 年员工清单中,仅在 2023 年花名册中可以找到他们。由此验证,他们是 2023 年才加入公司的新员工。

总结

在 Power Query 中转换数据,借助合并查询操作可以让数据清洗变得更为简单高效。用好合并查询的关键,不仅要分清在当前查询中的左表和右表,还要透彻理解每一种联接类型的意义,这样才能在选择时有的放矢。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved