左反联
Power Query 的“合并”对话框中可用的联接类型之一是左反联,只引入左表中未匹配右表行的行。 详情请见:合并操作概述
关系图显示包含“日期”、“国家/地区 ID”和“单位”列的左表。 强调的 CountryID 列在第 1 行和第 2 行中的值为 1,在第 3 行中的值为 3,在第 4 行中的值为 2。 右表包含“ID”和“国家/地区”列。 强调的 ID 列第 1 行值为 3(表示巴拿马),第 2 行值 为 4(表示西班牙)。 前两个表下方的表包含日期、CountryID、单位和国家/地区列。 该表有三行,其中两行包含 CountryID 1 的数据,一行包含 CountryID 2 的数据。 由于剩余的 CountryID 都与右侧表中的国家/地区不匹配,因此合并表中的“国家/地区”列中的行均为 null。
本文使用示例数据展示如何使用左反联进行合并操作。 本示例的源表示例为:
销售额:此表包括“日期”、“CountryID”和“单位”字段。 CountryID 是一个整数值,表示“国家/地区”表中的唯一标识符。
国家/地区:本表包含字段 ID 和国家/地区的参考表。 此 ID 字段表示每个记录的唯一标识符。
在此示例中,将合并两个表,将“销售“”表作为左表,将“国家/地区”表作为右表。 在以下列之间建立联接。
“销售额”表中的字段 | “国家/地区”表中的字段 |
---|---|
CountryID | ID |
目标是创建如下所示的表,其中只保留左表中与右表中不匹配的行。
左反联接最终表的屏幕截图,其中包含“日期”、“CountryID”、“单位”和“国家/地区”列标题,以及三行数据,其中“国家/地区”列的值均为 null。
要执行左反联接操作:
- 选择“销售额”查询,然后选择“合并查询”。
- 在“合并”对话框中的“待合并右表”下,选择“国家/地区”。
- 在“销售额”表中,选择“CountryID”列。
- 在“国家/地区”表中,选择“ID”列。
- 在“联接类型”部分,选择“左反”。
- 选择“确定”。
提示
请仔细查看对话框底部的信息,内容为“选择选择了第一个表中 4 行中的 3 行”。这条信息对于理解此操作的结果至关重要。
在“销售”表中,有两个“CountryID”为 1 的实例,一个“CountryID”为 2 的实例,但在“国家/地区”表中却找不到它们。 因此,左(第一个)表的四行中有三行找到了匹配项。
在“国家/地区”表中,有“ID”为 3 的“国家/地区”巴拿马,因此不会将此记录引入“销售”表中,因为数字匹配。 此外,有“ID”为 4 的“国家/地区”西班牙,但在“销售”表中却没有“CountryID”为 4 的相关记录。 因此,右(第二个)表中的两行都没有引入“销售”表。
从新建的“国家/地区”列展开“国家/地区”字段。 请勿选中“使用原始列名作为前缀”复选框。
执行此操作后,将创建如下图所示的表。 新扩展的“国家/地区”字段没有任何值,这是因为左反联接不会引入右表的任何值,只会保留左表的行。
最终表的屏幕截图,其中包含“日期”、“CountryID”、“单位”和“国家/地区”列标题,以及三行数据。 “国家/地区”列的值均为 null。