右反联

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

右反联接示例。

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

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

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

    销售表,其中包含“Date”、“CountryID”和“Units”列,“CountryID”的第 1 行和第 2 行设置为“1”,第 3 行设置为“3”、第 4 行设置为“2”。

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

    国家/地区表,其中“id”的第 1 行设置为“3”,第 2 行设置为“4”,第 1 行的“Country”设置为“Panama”,第 2 行的“Country”设置为“Spain”。

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

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

目标是创建如下所示的表,其中只保留右表中与左表中不匹配的行。 常见的使用情况是,你可以找到右表中有但左表中没有的所有行。

使用右反联接创建的表。

右反联带有日期、CountryID、单位和国家/地区标题列的最终表,其中包含除国家/地区(包含西班牙)外所有列均为 null 的一行。

若要执行右反联

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

“合并”对话框,显示遵循上一个右反联接过程的结果。

提示

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

在“国家/地区”表中,有 ID 为 4 的国家/地区“西班牙”,但在“销售额”表中却没有 CountryID 为 4 的相关记录。 这就是为什么右侧(第二个)表的两行中只有一行找到了匹配项。 由于右反联的工作原理,因此此操作的输出中永远不会看到左侧(第一个)表中的任何行。

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

展开“Countries”的表列。

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

右反联接最终表。

带有日期、CountryID、单位和国家/地区标题列的最终表,其中包含除国家/地区(包含西班牙)外所有列均为 null 的一行。