右反联接

Power Query 的“合并”对话框中的可用联接类型之一是“右反联接”,这种联接类型仅引入右表中那些在左表中没有任何匹配行的行。 详细信息:合并操作概述

右反联接示例。

显示包含“Date”、“CountryID”和“Units”列的左表的示意图。 突出显示的“CountryID”列包含第 1 行和第 2 行中的值 1、第 3 行中的值 3 和第 4 行中的值 2。 右表包含“ID”和“Country”列。 强调的 ID 列包含第 1 行(表示巴拿马)中的 3 个值,第 2 行包含 4 个值(表示西班牙)。 前两个表下方的表包含“Date”、“CountryID”、“Units”和“Country”列。 该表有一行,“日期”、“CountryID”和“单位”设置为 null,“国家/地区”设置为“西班牙”。

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

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

    销售表的屏幕截图,包含日期、国家ID和单位列,第1行和第2行的国家ID设置为1,第3行设置为3,第4行设置为2。

  • 国家/地区:此表是一个引用表,其中包含字段 IDCountryID 字段表示每个记录的唯一标识符。

    Countries 表的屏幕截图,其中“ID”在第 1 行中设置为 3,在第 2 行中设置为 4,“Country”在第 1 行中设置为“Panama”,在第 2 行中设置为“Spain”。

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

Sales 表中的字段 Countries 表中的字段
CountryID ID

目标是创建如下表,仅保留右表中与左表中的任何行都不匹配的行。 作为一种常见用例,可以找到右表中可用的所有行,但在左侧表中找不到这些行。

通过右反联接创建的表。

包含“Date”、“CountryID”、“Units”和“Country”标题列的右反联接最终表,其中包含除“Country”(包含“Spain”)以外的所有列均为 null 的一行。

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

  1. 选择 Sales 查询,然后选择“合并查询”。
  2. 在“合并”对话框中的“用于合并的右表”下,选择“Countries”。
  3. 在“Sales”表中,选择“CountryID”列。
  4. 在“Countries”表中,选择“ID”列。
  5. 在“联接类型”部分中,选择“右反”。
  6. 选择“确定”。

“合并”对话框,其中显示了遵循前一个右反联接步骤的结果。

提示

仔细查看对话框底部的消息,其中写着“所选内容排除了第二个表中 2 行中的 1 行”。该消息对于理解您从此操作获得的结果至关重要。

在“Countries”表中,“Country”Spain 的“ID”为 4,但“Sales”表中没有“CountryID”4 的记录。 这就是为什么在右(第二个)表中只有两行中的一行找到了匹配项。 由于右反联接的工作原理,永远不会在此操作的输出中看到左(第一个)表中的任何行。

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

展开的“Countries”列的屏幕截图,其中仅选择了“Country”字段。

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

右反联接最终表。

包含“Date”、“CountryID”、“Units”和“Country”标题列的最终表的屏幕截图,其中包含除“Country”(包含“Spain”)以外的所有列均为 null 的一行。