完全外部联接

Power Query 的 “合并 ”对话框中可用的联接类型之一是 完整的外部联接,它从左表和右表引入所有行。 更多信息:合并操作概述

完整外部联接示例。

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

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

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

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

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

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

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

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

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

完整外部联接操作的最终表。

最终完整外连接表的屏幕截图,其中 Date、CountryID 和 Units 派生自 Sales 表,以及从 Countries 表派生的国家列。 添加了第五行以包含来自西班牙的数据,但该行在 Date、CountryID 和 Units 列中包含 null,因为这些值在 Sales 表中不存在。

若要执行完整的外连接,请执行以下作业:

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

合并对话框显示遵循之前的全外连接步骤的结果。

注释

可以通过按住 Ctrl 键,同时选择多个列,来合并它们。

小窍门

仔细查看对话框底部的消息,该对话框底部显示“所选内容与两个表中 5 行中的 4 行匹配”。此消息对于了解从此作中获取的结果至关重要。

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

截图显示在完整外部联接中,左表没有与西班牙匹配的行,因此西班牙的 Date、CountryID 和 Units 值被设为 null。

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

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

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

完整外部联接最终表。

完整的外部联接最终表的屏幕截图,其中包含“Date”、“CountryID”和“Units”列,这些列派生自“销售”表,以及一个派生自“国家”表的国家列。 添加了第五行以包含来自西班牙的数据,但该行在 Date、CountryID 和 Units 列中包含 null,因为这些值在 Sales 表中不存在。