公式中的关系和查找

PowerPivot for Excel 中的最强大功能之一是能够在表之间创建关系,然后使用相关表查找或筛选相关数据。 通过使用随 PowerPivot for Excel(即数据分析表达式 (DAX))提供的公式语言,可以从表中检索相关的值。 DAX 使用关系模型,因此可以轻松准确地检索其他表或列中的相关值或对应值。

您可以将进行查找的公式创建为计算列的一部分,或者作为在数据透视表或数据透视图中使用的度量值的一部分。 有关详细信息,请参阅下列主题:

PowerPivot 中的度量值

计算列

本节描述为查找提供的 DAX 函数,以及阐述如何使用这些函数的某些示例。

注意注意

根据您要使用的查找操作或查找公式的类型,您可能需要先创建表之间的关系。 有关创建关系的信息,请参阅表之间的关系

了解查找函数

在当前表仅具有某种类型的标识符,但您需要的数据(如产品价格、名称或其他详细值)存储于相关表中的情况下,从其他表中查找匹配或相关数据的功能特别有用。 在其他表中有多行与当前行或当前值相关时,查找函数也很有用。 例如,您可以轻松地检索与特定区域、商店或销售人员关联的所有销售额。

与 Excel 查找函数(如 VLOOKUP,它们基于数组;或 LOOKUP,它们从多个匹配值中获取第一个匹配值)不同,DAX 遵循通过键联接的表中的现有关系以便获取完全匹配的单个相关值。 DAX 也可以检索与当前记录相关的记录组成的表。

注意注意

如果您对关系数据库很熟悉,则可以认为 PowerPivot 中的查找类似于 Transact-SQL 中的嵌套 subselect 语句。

有关在 PowerPivot 中使用的关系模型的详细信息,请参阅关系概述

检索单个相关值

RELATED 函数可从其他表中返回与当前表中的当前值相关的单个值。 您指定包含所需数据的列,该函数将通过两个表之间的现有关系从相关表的指定列中提取值。 在某些情况下,该函数必须按照关系链来检索数据。

例如,假设您在 Excel 中具有今天的装运列表。 但是,该列表只包含雇员 ID 号、订单 ID 号和发货人 ID 号,使得报表难于阅读。 为了获取您想要的附加信息,您可以将该列表转换为一个 PowerPivot 链接表,然后创建与 Employee 和 Reseller 表的关系,并且将 EmployeeID 匹配到 EmployeeKey 字段,将 ResellerID 匹配到 ResellerKey 字段。

为了在您的链接表中显示查找信息,您添加两个使用以下公式的新计算列:

= RELATED('Employees'[EmployeeName])
= RELATED('Resellers'[CompanyName])

查找之前

查找之后

Order ID

EmployeeID

ResellerID

100314

230

445

100315

15

445

100316

76

108

EmployeeID

Employee

Reseller

230

Kuppa Vamsi

Modular Cycle Systems

15

Pilar Ackeman

Modular Cycle Systems

76

Kim Ralls

Associated Bikes

Order ID

EmployeeID

ResellerID

Employee

Reseller

100314

230

445

Kuppa Vamsi

Modular Cycle Systems

100315

15

445

Pilar Ackeman

Modular Cycle Systems

100316

76

108

Kim Ralls

Associated Bikes

该函数使用链接表与 Employees 和 Resellers 表之间的关系获取报表中每行的正确名称。 还可以使用相关值进行计算。 有关详细信息和示例,请参阅 RELATED 函数

检索相关值的列表

RELATEDTABLE 函数通过现有关系返回包含指定表中所有匹配行的表。 例如,假定您想要确定每个分销商在这一年度中下了多少订单。 您可以在 Resellers 表中创建一个包含以下公式的新计算列,该公式在 ResellerSales_USD 表中查找每个分销商的记录,并且计算每个分销商所下订单数。 这些表是 DAX 示例工作簿的一部分。 有关示例数据的详细信息,请参阅获取 PowerPivot 示例数据

=COUNTROWS(RELATEDTABLE(ResellerSales_USD))

在此公式中,RELATEDTABLE 函数首先获取当前表中每一行的 ResellerKey 值。 (您无需在公式中的任意位置指定 ID 列,因为 PowerPivot 使用表之间的现有关系。)然后,RELATEDTABLE 函数获取 ResellerSales_USD 表中与每个分销商相关的所有行,并计算行数。请注意,如果两个表之间没有任何关系(直接或间接),则会获取 ResellerSales_USD 表中的所有行。

对于我们的示例数据库中的分销商 Modular Cycle Systems,在销售表中存在四个订单,因此该函数返回 4。 对于 Associated Bikes,该分销商没有销售业绩,因此该函数返回空白。

分销商

销售表中针对此分销商的记录

Modular Cycle Systems

分销商 ID

SalesOrderNumber

445

SO53494

445

SO71872

445

SO65233

445

SO59000

Associated Bikes

  

注意注意

由于 RELATEDTABLE 函数返回表,而非单个值,因此它必须用作对表执行操作的函数的参数。 有关详细信息,请参阅 RELATEDTABLE 函数

请参阅

概念

将计算添加到报表、图表和数据透视表

生成计算的公式

数据分析表达式 (DAX) 概述

公式中的聚合

其他资源

表之间的关系