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