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