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 表中的唯一标识符。
国家/地区:此表是包含字段 ID 和 Country 的引用表。 ID 字段表示每个记录的唯一标识符。
在此示例中,将这两个表合并,将 Sales 表作为左表,将 “国家/地区 ”表合并为右表。 以下列之间进行了联接。
| Sales 表中的字段 | “国家/地区”表中的字段 |
|---|---|
| CountryID | ID |
目标是创建如下所示的表,其中国家/地区的名称在“销售”表中显示为新的“国家/地区”列。 由于全外连接的工作原理,来自左右表的所有行都会被引入,无论它们是否只出现在其中一个表中。
最终完整外连接表的屏幕截图,其中 Date、CountryID 和 Units 派生自 Sales 表,以及从 Countries 表派生的国家列。 添加了第五行以包含来自西班牙的数据,但该行在 Date、CountryID 和 Units 列中包含 null,因为这些值在 Sales 表中不存在。
若要执行完整的外连接,请执行以下作业:
- 选择 “销售 ”查询,然后选择“ 合并查询”。
- 在 “合并 ”对话框中的 “右表”下,选择“ 国家/地区”。
- 在 Sales 表中,选择 CountryID 列。
- 在 “国家/地区 ”表中,选择 ID 列。
- 在联接类型部分,选择全外连接。
- 选择 “确定”
注释
可以通过按住 Ctrl 键,同时选择多个列,来合并它们。
小窍门
仔细查看对话框底部的消息,该对话框底部显示“所选内容与两个表中 5 行中的 4 行匹配”。此消息对于了解从此作中获取的结果至关重要。
在“国家/地区”表中,有 ID 为 4 的国家/地区西班牙,但在“销售”表中没有 CountryID 4 的记录。 因此,右表中只有四行中的三行找到了匹配项。 没有与左表匹配行的右表所有行都被分组,并作为新行显示在输出表中,左表字段为空。
从合并操作后新创建的“国家/地区”列中展开“国家/地区”字段。 不要选中“ 使用原始列名作为前缀 ”复选框。
执行此作后,将创建如下图所示的表。
完整的外部联接最终表的屏幕截图,其中包含“Date”、“CountryID”和“Units”列,这些列派生自“销售”表,以及一个派生自“国家”表的国家列。 添加了第五行以包含来自西班牙的数据,但该行在 Date、CountryID 和 Units 列中包含 null,因为这些值在 Sales 表中不存在。