分享

PowerQuery合并查询 | 这两种全新的联接方式,你应该还没有用过

 PowerBI星球 2024-05-16 发布于河南
昨天关于PQ合并查询的文章,介绍有6种联接方式,经高手提醒发现,PowerBI近期还新增了两种新的联接方式:左半和右半。
什么是左半联接和右半联接呢?我们还是通过昨天的例子先来看一下这两种方式的用法和效果。
在界面操作中目前是看不到这两种联接方式的,仍然只有6种。

不过你可以先任意选择一种联接方式,然后通过修改M公式的方式来找到另外两种联接方式。
比如选择左外,在编辑栏看到的M公式是这样的:

左外的公式最后面的联接类型是JoinKind.LeftOuter,这里我们可以将它修改为JoinKind.LeftSemi,就是左半联接。
也可以修改为JoinKind.RightSemi,就是右半联接。

"左半"联接的效果为:

看起来像是“内部”联接,不过将它合并结果展开以后,里面都是空值null:

"右半"联接的效果如下,左表都是空值。

通过上面的结果可以看出这两种联接的功能:
  • 左半联接(LeftSemi)返回第一个表中在第二个表中具有匹配项的所有行,不返回第二个表的数据。
  • 右半联接(RightSemi)返回第二个表中在第一个表中具有匹配项的所有行,不返回第一个表的数据。

以左半为例,左表的结果和“内部”类似,就是两个表取交集后的结果,右表为空,它只返回左半个表,所以称为左半。
右半同理。

它们和"内部"联接非常相似,不过当一个表的关联字段有重复值时,就能看出二者的差别了。
以下面两个表为例,右表有两个产品C:
两个表按"内部"联接的方式合并查询,结果会多一行。

而左半联接就不存在这个问题,它只返回能第一表中的行,无论第二个表是否有重复行:

以上就是“左半”和“右半”联接的介绍,由于不用匹配另外半个表的每行数据,在性能上应该会比“内部”联接会更好一些,当你有这样的需求时,可以尝试用这种联接方式。


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多