Lazy loaded imagePowerQuery合并查询的6大连接神器详细解读:左外、右外、完全外、内部、反左、反右

type
status
date
slug
summary
tags
category
icon
password
notion image

(本文3000字,阅读需要8分钟左右)
前面有一篇文章,我们整体性的介绍了Power Query的合并查询和追加查询,对于刚接触的新手一开始从整体上快速的把握这个功能的用途和能实现的效果非常有用,大家可以移步查阅:《》,今天我们详细来说说合并查询这个功能,包括他能实现的各种情况。
在Excel的单元格区域处理数据时,我们经常用到一个叫做VLOOKUP的匹配函数,特定情况下非常好用吗,但也有非常明显的短板和不足,那么来匹配表与表之间的数据,有没有一个类似的功能呢?答案肯定是有的,这就是在Power Query环境下的合并查询功能,可以将其称之为“超级VLOOKUP”,这个称呼,可以说是对Power Query合并查询功能最贴切、最形象、也是最经典的入门级描述。关于VLOOKUP的致命短板和合并查询升级之处,详细可以参见这篇文章:《》。
notion image
如上图所示,当我们决定对两个表进行合并查询时,会让我们选择合并查询的6大种类,我称之为6大神器,今天我们就把这6大神器进行一一的讲解。
我们来设计两个非常简单、但足以说明问题的Excel表样:一个“员工表”和一个“项目分配表”
核心业务场景:公司里有一份完整的员工名单,同时还有一份项目分配记录,我们想通过分析这两张表,了解员工的参与项目情况。

准备两个Excel表样

如下图,创建两个Excel文件,或者在一个Excel文件的两个工作表中,创建以下数据。强烈建议将它们分别“格式化为表格”,即不要以单元格区域的形式在Excel表中列示,并命名为Employees和Projects。
表1: 员工表 (Employees) — Sheet A
这张表是公司的员工花名册,包含了所有在职员工。
EmployeeID
EmployeeName
Department
E01
张三
销售部
E02
李四
研发部
E03
王五
销售部
E04
赵六
人事部
表2: 项目分配表 (Projects) — Sheet B
这张表记录了当前正在进行的几个项目,以及被分配到项目上的员工。
ProjectName
AssignedEmployeeID
项目A
E01
项目A
E03
项目B
E02
项目C
E05
关键信息
  • 赵六(E04)在员工表里,但没有被分配任何项目。
  • E05这个员工ID被分配到了项目C,但他/她并不在我们的员工表里(可能是一位外部顾问或已离职员工)。

在Power Query中演示“六大神器”

现在,我们将这两个表加载到Power Query中,然后以Employees表为主表,Projects表为要合并的表,来演示六种不同的连接类型。匹配的键是[EmployeeID][AssignedEmployeeID]

1.左外部连接 — “以我为主,匹配你”

  • 业务问题:“我想看到所有员工的列表,并在他们旁边列出他们参与的项目(如果没有,就为空)。”
  • 这正是在Excel单元格数据处理中的VLOOKUP能做到的。
notion image
结果:
EmployeeID
EmployeeName
Department
ProjectName
E01
张三
销售部
项目A
E02
李四
研发部
项目B
E03
王五
销售部
项目A
E04
赵六
人事部
null

2.右外部连接 — “以你为主,匹配我”

  • 业务问题:“我想看到所有被分配了项目的记录,并找出对应的员工信息(如果员工不存在,也要保留这条项目记录)。”
notion image
结果:
ProjectName
AssignedEmployeeID
EmployeeName
Department
项目A
E01
张三
销售部
项目A
E03
王五
销售部
项目B
E02
李四
研发部
项目C
E05
null
null

3.完全外部连接 — “宁可错杀,不可放过”

  • 业务问题:“我想看到所有的员工和所有的项目分配记录,无论它们是否能匹配上,给我一个最全的大列表。”
notion image
结果:
EmployeeID
EmployeeName
Department
ProjectName
AssignedEmployeeID
E01
张三
销售部
项目A
E01
E02
李四
研发部
项目B
E02
E03
王五
销售部
项目A
E03
E04
赵六
人事部
null
null
null
null
null
项目C
E05

4.内部连接 — “求同存异,只要交集”

  • 业务问题:“我只想看那些既在员工列表里,又确实被分配了项目的员工信息。”
 
结果:
EmployeeID
EmployeeName
Department
ProjectName
E01
张三
销售部
项目A
E02
李四
研发部
项目B
E03
王五
销售部
项目A

5.反左连接 — “找出我方‘单身狗’”

  • 业务问题:“请帮我找出所有在职的员工中,还没有被分配任何项目的人员名单。”
  • 这是VLOOKUP绝对做不到的神器!
 
结果:
EmployeeID
EmployeeName
Department
E04
赵六
人事部

6.反右连接 — “找出对方‘神秘人’”

  • 业务问题:“请帮我检查一下项目分配表,看看有没有哪些被分配的员工ID是无效的(即在我们的员工花名册里根本不存在)。”
  • 这同样是VLOOKUP做不到的数据核对利器!
 
结果:
ProjectName
AssignedEmployeeID
项目C
E05
通过这两个简单的表样,我们可以清晰地看到,六种不同的连接类型,就像六把功能各异的“瑞士军刀”,能够精确地回答各种复杂的业务问题,实现从简单的数据匹配到深度的数据核对与审计。

【点击文末“阅读原文”,获取本文使用到的及历史以来提及、发布的相关精选和原创资料,和我们一起充电,加入后可享受每月6次免费咨询提问,帮助解决您的特定问题!】

如果本篇文章对您有帮助或启发,请帮我们点赞、转发、推荐、关注,让更多想转型财务BP、锻造数据分析和可视化洞察能力的财务同行们看到,关注【老汪洞察】,不迷路!
若想获得更多制造业成本本管控、核算、全面预算、业财融合方面的落地实操干货,加入我们的大本营是你的不二之选,快点击下方卡片看看吧!
 
温馨提示
🙏🏻
如果您不想错过【老汪洞察】的文章,请将我们设为"星标",这样每次最新文章推送才会第一时间出现在您的订阅列表里。 方法:点击文章页面左上角蓝色文字“老汪洞察”进入主页,点击关注后,再点主页右上角"...",然后选择"设为星标",即可完成,感谢您的支持。
 
上一篇
VLOOKUP的致命硬伤以及PQ合并查询如何来拯救?
下一篇
生产成本预算三大标准:单耗、能耗、工时
Loading...
文章列表
让财税成为经营的力量
电脑与网络
从Power Query到Power BI,入门到精通
知识运用