Power Pivot 中最强大的功能之一是在表之间创建关系,然后使用相关表查找或筛选相关数据。 可以使用Power Pivot 、数据分析表达式 (DAX) 提供的公式语言从表中检索相关值。 DAX 使用关系模型,因此可以轻松准确地检索另一个表或列中的相关或相应值。 如果熟悉 Excel 中的 VLOOKUP, Power Pivot 中的此功能类似,但要容易得多。
可以创建作为计算列的一部分或度量值的一部分进行查找的公式,以便在数据透视表或数据透视图中使用。 有关详细信息,请参阅下列主题:
本部分介绍提供用于查找的 DAX 函数,以及如何使用函数的一些示例。
注意: 根据要使用的查找操作或查找公式的类型,可能需要先在表之间创建关系。
了解查找函数
在当前表只有某种标识符的情况下,从另一个表查找匹配或相关数据的功能特别有用,但需要 (的数据(如产品价格、名称或其他详细值) 存储在相关表中)。 如果另一个表中存在与当前行或当前值相关的多行,它也很有用。 例如,可以轻松检索与特定区域、商店或销售人员关联的所有销售。
与基于数组的 VLOOKUP 等 Excel 查找函数或 LOOKUP(它们获取多个匹配值中的第一个)相比,DAX 遵循由键联接的表之间的现有关系,以获取完全匹配的单个相关值。 DAX 还可以检索与当前记录相关的记录表。
注意: 如果熟悉关系数据库,则可以将 Power Pivot 中的查找视为类似于 Transact-SQL 中的嵌套子select 语句。
检索单个相关值
RELATED 函数从与当前表中的当前值相关的另一个表中返回单个值。 指定包含所需数据的列,函数遵循表之间的现有关系,从相关表中的指定列提取值。 在某些情况下,函数必须遵循关系链才能检索数据。
例如,假设你在 Excel 中有一个当前发货列表。 但是,该列表仅包含一个员工 ID 号、一个订单 ID 号和一个发货人 ID 号,这使得报表难以阅读。 若要获取所需的额外信息,可以将该列表转换为 Power Pivot 链接表,然后创建与 Employee 和 Reseller 表的关系,将 EmployeeID 与 EmployeeKey 字段匹配,将 ResellerID 与 ResellerKey 字段匹配。
若要在链接表中显示查找信息,请使用以下公式添加两个新的计算列:
= RELATED ('Employees'[EmployeeName])
= RELATED ('Resellers'[CompanyName])查找前的今日出货量
订单 ID |
EmployeeID |
ResellerID |
---|---|---|
100314 |
230 |
445 |
100315 |
15 |
445 |
100316 |
76 |
108 |
Employees 表
EmployeeID |
Employee |
经销商 |
---|---|---|
230 |
Kuppa Vamsi |
模块化循环系统 |
15 |
皮拉尔·阿克曼 |
模块化循环系统 |
76 |
Kim Ralls |
关联的自行车 |
今天的发货与查找
订单 ID |
EmployeeID |
ResellerID |
Employee |
经销商 |
---|---|---|---|---|
100314 |
230 |
445 |
Kuppa Vamsi |
模块化循环系统 |
100315 |
15 |
445 |
皮拉尔·阿克曼 |
模块化循环系统 |
100316 |
76 |
108 |
Kim Ralls |
关联的自行车 |
函数使用链接表与 Employees 和 Resellers 表之间的关系来获取报表中每一行的正确名称。 还可以使用相关值进行计算。 有关详细信息和示例,请参阅 RELATED 函数。
检索相关值的列表
RELATEDTABLE 函数遵循现有关系,并返回包含指定表中所有匹配行的表。 例如,假设你想要了解每个经销商今年下了多少个订单。 可以在“经销商”表中创建新的计算列,其中包含以下公式,用于查找ResellerSales_USD表中每个经销商的记录,并计算每个经销商下达的单个订单数。
=COUNTROWS (RELATEDTABLE (ResellerSales_USD) )
在此公式中,RELATEDTABLE 函数首先获取当前表中每个经销商的 ResellerKey 值。 (无需在公式中的任何位置指定 ID 列,因为 Power Pivot 使用表之间的现有关系。) 然后,RELATEDTABLE 函数从ResellerSales_USD表中获取与每个经销商相关的所有行,并计算行数。 如果两个表之间没有 (直接或间接) 关系,则将从ResellerSales_USD表中获取所有行。
对于示例数据库中的经销商模块化循环系统,销售表中有四个订单,因此函数返回 4。 对于关联自行车,经销商没有销售额,因此函数返回空白。
经销商 |
此经销商的销售表中的记录 |
|
---|---|---|
模块化循环系统 |
经销商 ID |
SalesOrderNumber |
445 |
SO53494 |
|
445 |
SO71872 |
|
445 |
SO65233 |
|
445 |
SO59000 |
|
经销商 ID |
SalesOrderNumber |
|
关联的自行车 |
注意: 由于 RELATEDTABLE 函数返回表而不是单个值,因此它必须用作对表执行操作的函数的参数。 有关详细信息,请参阅 RELATEDTABLE 函数。