左反联

Power Query 的“合并”对话框中可用的联接类型之一是左反联,只引入左表中未匹配右表行的行。 详情请见:合并操作概述

左反联接示例。

关系图显示包含“日期”、“国家/地区 ID”和“单位”列的左表。 强调的 CountryID 列在第 1 行和第 2 行中的值为 1,在第 3 行中的值为 3,在第 4 行中的值为 2。 右表包含“ID”和“国家/地区”列。 强调的 ID 列第 1 行值为 3(表示巴拿马),第 2 行值 为 4(表示西班牙)。 前两个表下方的表包含日期、CountryID、单位和国家/地区列。 该表有三行,其中两行包含 CountryID 1 的数据,一行包含 CountryID 2 的数据。 由于剩余的 CountryID 都与右侧表中的国家/地区不匹配,因此合并表中的“国家/地区”列中的行均为 null。

本文使用示例数据展示如何使用左反联进行合并操作。 本示例的源表示例为:

  • 销售额:此表包括“日期”、“CountryID”和“单位”字段。 CountryID 是一个整数值,表示“国家/地区”表中的唯一标识符。

    “销售”表的屏幕截图,其中包含“日期”、“CountryID”和“单位”列,“CountryID”的第 1 行和第 2 行设置为 1,第 3 行设置为 3,第 4 行设置为 2。

  • 国家/地区:本表包含字段 ID国家/地区的参考表。 此 ID 字段表示每个记录的唯一标识符。

    “国家/地区”表的屏幕截图,其中“ID”的第 1 行设置为“3”,第 2 行设置为“4”,第 1 行的“国家/地区”设置为“巴拿马”,第 2 行的“国家/地区”设置为“西班牙”。

在此示例中,将合并两个表,将“销售“”表作为左表,将“国家/地区”表作为右表。 在以下列之间建立联接。

“销售额”表中的字段 “国家/地区”表中的字段
CountryID ID

目标是创建如下所示的表,其中只保留左表中与右表中不匹配的行。

左反联接最终表。

左反联接最终表的屏幕截图,其中包含“日期”、“CountryID”、“单位”和“国家/地区”列标题,以及三行数据,其中“国家/地区”列的值均为 null。

要执行左反联接操作:

  1. 选择“销售额”查询,然后选择“合并查询”。
  2. 在“合并”对话框中的“待合并右表”下,选择“国家/地区”。
  3. 在“销售额”表中,选择“CountryID”列。
  4. 在“国家/地区”表中,选择“ID”列。
  5. 在“联接类型”部分,选择“左反”。
  6. 选择“确定”

“合并”对话的屏幕截图,显示了遵循上一个左反联接过程的结果。

提示

请仔细查看对话框底部的信息,内容为“选择选择了第一个表中 4 行中的 3 行”。这条信息对于理解此操作的结果至关重要。

在“销售”表中,有两个“CountryID”为 1 的实例,一个“CountryID”为 2 的实例,但在“国家/地区”表中却找不到它们。 因此,左(第一个)表的四行中有三行找到了匹配项。

在“国家/地区”表中,有“ID”为 3 的“国家/地区”巴拿马,因此不会将此记录引入“销售”表中,因为数字匹配。 此外,有“ID”为 4 的“国家/地区”西班牙,但在“销售”表中却没有“CountryID”为 4 的相关记录。 因此,右(第二个)表中的两行都没有引入“销售”表。

从新建的“国家/地区”列展开“国家/地区”字段。 请勿选中“使用原始列名作为前缀”复选框。

“扩展”对话的屏幕截图,其中只选择了“国家/地区”列。

执行此操作后,将创建如下图所示的表。 新扩展的“国家/地区”字段没有任何值,这是因为左反联接不会引入右表的任何值,只会保留左表的行。

左反联接的最终表。

最终表的屏幕截图,其中包含“日期”、“CountryID”、“单位”和“国家/地区”列标题,以及三行数据。 “国家/地区”列的值均为 null。