将多个表合并为一个表

已完成

合并查询的功能非常强大,因为它使您能够追加或合并不同的表或查询。 在以下情况下,可以将表合并为一个表:

  • 存在的表过多,使得导航过于复杂的语义模型变得困难。

  • 多个表具有一个类似角色。

  • 一个表只有一个或两个可以放进不同表中的列。

  • 您希望在一个自定义列中使用来自不同表的多个列。

可以通过两种不同的方式合并表:合并和追加。

假设您正在为销售团队和人力资源团队制作 Power BI 报表。 他们要求您创建一个联系人信息报表,其中包含每个员工、供应商和客户的联系人信息和位置。 数据存在于 HR.Employees、Production.Suppliers 和 Sales.Customers 表,如下图所示。

但是,这些数据来自多个表,所以此难题可决定您如何合并上述多个表中的数据并创建一个真实来源表以从中创建报表。 Power BI 的固有功能允许您将查询组合和合并到单个表中。

追加查询

追加查询时,您将向另一个表或查询添加数据行。 例如,您可能有两个表,其中一个表有 300 行,另一个表有 100 行,当追加查询时,最终将有 400 行。 合并查询时,会将列从一个表(或查询)添加到另一个表(或查询)中。 若要合并两个表,您必须有一个列是两个表之间的键。

对于之前提及的应用场景,您将使用 Production.Suppliers 和 Sales.Customers 表对 HR.Employees 表进行追加,因此您会有一个联系人信息的主列表。 由于您想要创建一个包含员工、供应商和客户的所有联系人信息的表,因此当您合并查询时,您的合并表中所需的相关列的名称必须与原始数据表中相同,这样才能看到一个合并的视图。

开始合并查询之前,您可以从表中删除此任务不需要的无关列。 若要完成本任务,请将每个表的格式设置为仅包含相关信息的四个列,然后进行重命名,以便它们都具有相同的列标头:ID、公司、名称和电话。 下图是重新格式化后的 Sales.Customers、Production.Suppliers 和 HR.Employees 表的代码片段。

完成重新格式化后,可以合并查询。 在 Power Query 编辑器功能区上的主页选项卡上,选择追加查询的下拉列表。 您可以选择将查询追加为新查询,这意味着追加的输出将生成一个新查询或表,或者可以选择追加查询,这会将行从现有表添加到另一个表中。

下一个任务是创建新的主表,因此您需要选择将查询追加为新查询。 此选择将您转到一个窗口,您可以在其中将要追加的表从可用表添加到要追加的表,如下图所示。

添加要追加的表后,选择确定。 系统会将您转到一个新查询,其中包含所有三个表中的所有行,如下图所示。

现在,您已成功创建了包含员工、供应商和客户信息的一个主表。 您可以退出 Power Query 编辑器并围绕此主表生成任何报表元素。

但是,如果您想要合并表,而不是将数据从一个表追加到另一个表,此流程将有所不同。

合并查询

合并查询时,您将基于表之间通用的列将数据从多个表合并到一个表中。 此流程类似于 SQL 中的 JOIN 子句。 考虑以下应用场景:销售团队现在希望您将订单和其对应的详细信息(当前位于两个表中)合并到单个表中。 可以通过合并 Orders 和 OrderDetails 这两个表来完成此任务,如下图所示。 这两个表之间共享的列为 OrderID

转到 Power Query 编辑器功能区上的主页,然后选择合并查询下拉菜单,您可以在其中选择将查询合并为新查询。 此选择将打开一个新窗口,您可以从中选择要从下拉列表中合并的表,然后选择表之间匹配的列,在本例中为 orderid

还可以选择如何联接两个表,这也是类似 SQL 中的 JOIN 语句的一个流程。 这些联接选项包括:

  • 左外 - 显示第一个表中的所有行以及第二个表中的匹配行。

  • 完全外部 - 显示两个表中的所有行。

  • - 显示两个表之间匹配的行。

对于此应用场景,您选择使用左外联接。 选择确定,这会将您转到一个新窗口,您可以在其中查看合并的查询。

现在,您可以通过不同的方式合并两个查询或表,以便根据业务要求以最合适的方式查看您的数据。

有关此主题的详细信息,请参阅在 Power BI 中调整和合并数据文档。