完全外联

Power Query“合并”对话中可用联接类型之一是完全外部联接,该功能可引入左表和右表中的所有行。 详情请见:合并操作概述

完全外部联接示例。

左表的屏幕截图,其中包含“日期”、“CountryID”和“单位”列。 强调的 CountryID 列在第 1 行和第 2 行中的值为 1,在第 3 行中的值为 3,在第 4 行中的值为 2。 右表包含“ID”和“国家/地区”列。 强调的 ID 列中,第 1 行的值为 1(表示美国),第 2 行的值为 2(表示加拿大),第 3 行的值为 3(表示巴拿马),第 4 行的值为 4(表示西班牙)。 前两个表下方的表包含日期、CountryID、单位和国家/地区列。 所有行均已根据 CountryID 值按数字顺序重新排列。 与 CountryID 编号关联的国家/地区显示在“国家/地区”列中。 由于西班牙的国家 ID 未包含在左表中,因此添加了新行,并将该行的日期、国家/地区 ID 和单位值设置为 null。

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

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

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

  • 国家/地区:本表为参考表,其中包含字段“ID”和“国家/地区”。 “ID”字段表示每个记录的唯一标识符。

    国家/地区表的屏幕截图,其中包含“ID”和“国家/地区”列,“ID”的第 1 行设置为“1”,第 2 行设置为“2”,第 3 行设置为“3”,第 4 行设置为“4”。

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

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

目标是创建如下所示的表,其中国家/地区的名称在“销售额”表中显示为新的“国家/地区”列。 由于完全外部联接的工作原理,无论行是否只出现在一个表中,左右表中的所有行都将全部引入。

采取了完全外部联接操作的最终表。

完全外部联接最终表的屏幕截图,其中包含派生自“销售额”表的“日期”、“CountryID”和“单位”列,以及派生自“国家/地区”表的“国家/地区”列。 添加了第五行以包含西班牙的数据,但该行在日期、CountryID 和单位列中包含 null 值,因为这些值原本在“销售额”表中不存在。

执行完全外部联接操作:

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

“合并”对话框,其中显示遵循上一个完全外部联接过程的结果。

注意

可以通过选择并按住 Ctrl 键,然后选择列来合并多列。

提示

请仔细查看对话框底部的消息,内容为“所选内容与两个表中的 5 行中的 4 行匹配。”此消息对于理解此操作的结果至关重要。

在“国家/地区”表中,有“ID”为 4 的“国家/地区”西班牙,但在“销售”表中却没有“CountryID”为 4 的相关记录。 因此,右表的四行中只有三行找到了匹配项。 右表中没有与左表相匹配的所有行都将分组并显示在输出表的新行中,且左表中的字段没有任何值。

屏幕截图,其中显示了对于完全外部联接,左表中没有“西班牙”的匹配行,因此“西班牙”的“日期”、“CountryID”和“单位”的值设置为 null。

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

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

执行此操作后,将创建如下图所示的表。

完全外部联接最终表。

完全外部联接最终表的屏幕截图,其中包含派生自“销售”表的“日期”、“CountryID”和“单位”,以及派生自“国家/地区”表的“国家/地区”列。 添加了第五行以包含西班牙的数据,但该行在日期、CountryID 和单位列中包含 null 值,因为这些值原本在“销售额”表中不存在。