合并查询概述
合并查询操作根据一列或多列的匹配值将两个现有表联接在一起。 可以根据所需的输出结果,选择使用不同类型的联接。
合并查询
可以在“合并”组中的“主页”选项卡上找到“合并查询”命令。 下拉菜单中有两个选项:
- 合并查询:显示“合并”对话框,其中所选查询作为合并操作的左表。
- 合并查询为新查询:显示“合并”对话框,而不显示合并操作的任何预选表。
确定要合并的表
合并操作需要两个表:
- 用于合并的左表:屏幕顶部到底部的第一个选项。
- 用于合并的右表:屏幕顶部到底部的第二个选项。
注意
在选择正确的联接类型时,表的左侧或右侧位置非常重要。
选择列对
选择左右表后,可以选择驱动表之间联接的列。 在以下示例中,有两个表:
- 销售额:CountryID 字段是“国家/地区”表中的键或标识符。
- 国家/地区:此表包含 CountryID 以及国家/地区的名称。
“合并”对话框的屏幕截图,合并左表设置为“销售额”并选择 CountryID 列,合并右表设置为“国家/地区”并选择 CountryID 列。
目标是使用这两个表中的 CountryID 列联接两个表,因此需要从每个表中选择 CountryID 列。 进行选择后,对话框底部会显示一条信息,其中包含估计的匹配次数。
注意
虽然此示例显示两个表的相同列标题,但这并不是合并操作的要求。 表之间的列标题无需匹配。 不过,需要注意的是,列必须具有相同的数据类型,否则合并操作可能不会产生正确的结果。
还可以在选择列时按 Ctrl 键,选择多个列来执行联接。 执行此操作时,所选列的顺序以小数字显示在列标题旁边,从 1 开始。
在此示例中,有“销售额”和“国家/地区”两个表。 每个表都有 CountryID 和 StateID 列,需要将这两列配对,以便在两列之间进行连接。
首先选择“销售额”表中的 CountryID 列,选择 Ctrl 键,然后选择 StateID 列。 (此操作在列标题中显示小数字)。接下来,在“国家/地区”表中执行相同的选择。
“合并”对话框的屏幕截图,合并左表设置为“销售额”,其中已选中 CountryID 和 StateID 列,右合并表设置为“国家/地区”,其中已选中 CountryID 和 StateID 列。 “联接”类型设置为“左外部联接”。
注意
为联接选择多个列时,在每个表中选择列的顺序必须一致。 例如,左侧表中选择的第一列与右侧表中选择的第一列相匹配,依此类推。 否则,会观察到不正确的联接结果。
使用列对建议
在“合并”对话框中选择左表和右表时,可以检查对话框右上角的灯泡图标,查看是否有关于两个表之间列对映射的任何建议。
可能会有很多建议,但是在这种情况下,该功能只有一个建议,即将“销售额”表中的 CountryID 列映射到“国家/地区”表中的 CountryID 列。 可以选择它,列对映射将自动应用于对话框。
注意
只建议列对映射。 此对话框中的其他选项,如连接类型或模糊匹配配置,不在此建议的讨论范围内。
展开或聚合新的合并表列
在“合并”对话框中选择“确定”后,查询的基表包含左表中的所有列。 此外,将添加一个与右表同名的新列。 该列按行保存与右表相对应的值。
在这里,可以选择展开或聚合此新表列中的字段,这些字段是右表中的字段。
注意
目前,Power Query Online 体验仅在其界面中提供展开操作。 今年晚些时候将增加聚合选项。
联接类型
联接类型指定如何执行合并操作。 下表介绍 Power Query 中的可用联接类型。
联接类型 | Icon | 说明 |
---|---|---|
左侧外部 | 左表中的所有行,右表中的匹配行 | |
右侧外部 | 右表中的所有行,左表中的匹配行 | |
完全外部 | 两个表中的所有行 | |
内部 | 仅限两个表中的匹配行 | |
左反 | 仅限左表中的行 | |
右反 | 仅限右表中的行 |
模糊匹配
在比较列时,可以使用模糊合并来应用模糊匹配算法,尝试在合并的表中找到匹配项。 在“合并”对话框中选择“使用模糊匹配执行合并”复选框,即可启用此功能。 展开模糊匹配选项,查看所有可用的配置。
注意
模糊匹配只支持文本列的合并操作。 有关详细信息,请转到模糊匹配在 Power Query 中的工作原理。