合并查询概述

合并查询操作根据一列或多列的匹配值将两个现有表联接在一起。 可以根据所需的输出结果,选择使用不同类型的联接。

关系图,其中上方两个空表合并为下方表,合并后的表包含左表的所有列和右表的一列。

合并查询

可以在“合并”组中的“主页”选项卡上找到“合并查询”命令。 下拉菜单中有两个选项:

  • 合并查询:显示“合并”对话框,其中所选查询作为合并操作的左表。
  • 合并查询为新查询:显示“合并”对话框,而不显示合并操作的任何预选表。

Power Query“开始”选项卡的屏幕截图,其中突出显示了“合并查询”选项。

确定要合并的表

合并操作需要两个表:

  • 用于合并的左表:屏幕顶部到底部的第一个选项。
  • 用于合并的右表:屏幕顶部到底部的第二个选项。

“合并”对话框的屏幕截图,其中没有左侧表或右侧表的条目。

注意

在选择正确的联接类型时,表的左侧或右侧位置非常重要。

选择列对

选择左右表后,可以选择驱动表之间联接的列。 在以下示例中,有两个表:

  • 销售额CountryID 字段是“国家/地区”表中的键或标识符。
  • 国家/地区:此表包含 CountryID 以及国家/地区的名称。

“合并”对话框,其中已选择左表和右表和列。

“合并”对话框的屏幕截图,合并左表设置为“销售额”并选择 CountryID 列,合并右表设置为“国家/地区”并选择 CountryID 列。

目标是使用这两个表中的 CountryID 列联接两个表,因此需要从每个表中选择 CountryID 列。 进行选择后,对话框底部会显示一条信息,其中包含估计的匹配次数。

注意

虽然此示例显示两个表的相同列标题,但这并不是合并操作的要求。 表之间的列标题无需匹配。 不过,需要注意的是,列必须具有相同的数据类型,否则合并操作可能不会产生正确的结果。

还可以在选择列时按 Ctrl 键,选择多个列来执行联接。 执行此操作时,所选列的顺序以小数字显示在列标题旁边,从 1 开始。

在此示例中,有“销售额”和“国家/地区”两个表。 每个表都有 CountryIDStateID 列,需要将这两列配对,以便在两列之间进行连接。

首先选择“销售额”表中的 CountryID 列,选择 Ctrl 键,然后选择 StateID 列。 (此操作在列标题中显示小数字)。接下来,在“国家/地区”表中执行相同的选择。

“合并”对话框,其中包含左表和右表的设置。

“合并”对话框的屏幕截图,合并左表设置为“销售额”,其中已选中 CountryID 和 StateID 列,右合并表设置为“国家/地区”,其中已选中 CountryID 和 StateID 列。 “联接”类型设置为“左外部联接”。

注意

为联接选择多个列时,在每个表中选择列的顺序必须一致。 例如,左侧表中选择的第一列与右侧表中选择的第一列相匹配,依此类推。 否则,会观察到不正确的联接结果。

使用列对建议

在“合并”对话框中选择左表和右表时,可以检查对话框右上角的灯泡图标,查看是否有关于两个表之间列对映射的任何建议。

可能会有很多建议,但是在这种情况下,该功能只有一个建议,即将“销售额”表中的 CountryID 列映射到“国家/地区”表中的 CountryID 列。 可以选择它,列对映射将自动应用于对话框。

“合并”对话框的屏幕截图,其中显示了“销售额”和“国家/地区”表的建议列配对。

注意

只建议列对映射。 此对话框中的其他选项,如连接类型或模糊匹配配置,不在此建议的讨论范围内。

展开或聚合新的合并表列

在“合并”对话框中选择“确定”后,查询的基表包含左表中的所有列。 此外,将添加一个与右表同名的新列。 该列按行保存与右表相对应的值。

在这里,可以选择展开或聚合此新表列中的字段,这些字段是右表中的字段。

展开表列菜单。

注意

目前,Power Query Online 体验仅在其界面中提供展开操作。 今年晚些时候将增加聚合选项。

联接类型

联接类型指定如何执行合并操作。 下表介绍 Power Query 中的可用联接类型。

联接类型 Icon 说明
左侧外部 左表中的所有行,右表中的匹配行
右侧外部 右表中的所有行,左表中的匹配行
完全外部 两个表中的所有行
内部 仅限两个表中的匹配行
左反 仅限左表中的行
右反 仅限右表中的行

模糊匹配

在比较列时,可以使用模糊合并来应用模糊匹配算法,尝试在合并的表中找到匹配项。 在“合并”对话框中选择“使用模糊匹配执行合并”复选框,即可启用此功能。 展开模糊匹配选项,查看所有可用的配置。

注意

模糊匹配只支持文本列的合并操作。 有关详细信息,请转到模糊匹配在 Power Query 中的工作原理