左反联接

Power Query 的 “合并 ”对话框中可用的联接类型之一是 左反联接,它仅从左表中引入没有右表中任何匹配行的行。 有关详细信息,请转到 “合并作”概述

左反联接示例。

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

本文使用示例数据来演示如何使用左侧反联接执行合并作。 此示例的示例源表包括:

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

    包含 Date、CountryID 和 Units 列的销售表的屏幕截图,其中 CountryID 设置为第 1 行和第 2 行 2、第 3 行 3 和第 2 行 2。

  • 国家/地区:此表是字段 IDCountry 的引用表。 ID 字段表示每个记录的唯一标识符。

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

在此示例中,将这两个表合并,将 Sales 表作为左表,将 “国家/地区 ”表合并为右表。 以下列之间进行了联接。

Sales 表中的字段 “国家/地区”表中的字段
CountryID ID

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

左反联接最终表。

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

若要执行左反联接,请执行以下作:

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

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

小窍门

仔细查看对话底部的消息,该对话框底部显示“选择从第一个表中选择 4 行中的 3 行”。此消息对于了解从此作中获得的结果至关重要。

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

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

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

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

执行此作后,你创建了如下图所示的表。 新展开的国家 /地区 字段没有任何值,因为左反联接不会从右表中引入任何值, 它只保留左表中的行。

左反联接的最后一个表。

最后一个表的屏幕截图,其中包含 Date、CountryID、Units 和 Country 列标题,以及三行数据。 Country 列的值均为 null。