其中最强大的功能 Power Pivot 之一是能够在表之间创建关系,然后使用相关表查找或筛选相关的数据。 使用 DAX 函数、数据分析表达式和 DAX 表达式Power Pivot 公式语言从 (相关) 。 DAX 使用关系模型,因此可以轻松准确地检索另一个表或列中的相关或对应值。 如果熟悉 VLOOKUP Excel,则 Power Pivot 中的此功能非常相似,但更易于实现。
您可以创建公式,这些公式作为计算列的一部分进行查找,或作为在数据透视表或数据透视表或数据透视表使用的度量值的一数据透视图。 有关详细信息,请参阅下列主题:
本部分介绍为查找提供的 DAX 函数,以及如何使用这些函数的一些示例。
注意: 根据想要使用的查找操作或查找公式的类型,可能需要先在表之间创建关系。
了解查找函数
如果当前表只有某种类型的标识符,但您需要的 (例如产品价格、名称或其他详细值) 存储在相关表中,则查找其他表中的匹配或相关数据的能力特别有用。 当另一个表中有多个行与当前行或当前值相关时,它还很有用。 例如,可以轻松检索与特定区域、商店或销售人员相关的所有销售。
与 Excel查找函数(如基于数组的 VLOOKUP)或 LOOKUP(获取多个匹配值的第一个值)相比,DAX 遵循键联接的表之间的现有关系,以获得完全匹配的单个相关值。 DAX 还可以检索与当前记录相关的记录表。
注意: 如果熟悉关系数据库,可以将查询视为 Power Pivot 类似于 Transact-SQL 中的嵌套子SQL。
检索单个相关值
RELATED 函数从与当前表中的当前值相关的另一个表中返回单个值。 指定包含需要的数据的列,函数遵循表之间的现有关系,从相关表中的指定列提取值。 在某些情况下,函数必须遵循一系列关系来检索数据。
例如,假设你有一个列表,包含今天在Excel。 但是,该列表仅包含员工 ID 号、订单 ID 号和运货商 ID 编号,使报表难以阅读。 若要获取想要的额外信息,可将该列表转换为 Power Pivot 链接表,然后创建与"员工"和"经销商"表的关系,将 EmployeeID 与 EmployeeKey 字段匹配,将 ResellerID 与 ResellerKey 字段匹配。
若要在链接表中显示查找信息,可以使用以下公式添加两个新的计算列:
= RELATED ('Employees'[EmployeeName])
= RELATED ('Resellers'[CompanyName])
查找前今天发货
订单 ID |
EmployeeID |
ResellerID |
---|---|---|
100314 |
230 |
445 |
100315 |
15 |
445 |
100316 |
76 |
108 |
Employees 表
EmployeeID |
员工 |
经销商 |
---|---|---|
230 |
Kuppa Vamsi |
模块化循环系统 |
15 |
Pilar Ackeman |
模块化循环系统 |
76 |
Kim Ralls |
关联的自行车 |
带查找的今天发货
订单 ID |
EmployeeID |
ResellerID |
员工 |
经销商 |
---|---|---|---|---|
100314 |
230 |
445 |
Kuppa Vamsi |
模块化循环系统 |
100315 |
15 |
445 |
Pilar Ackeman |
模块化循环系统 |
100316 |
76 |
108 |
Kim Ralls |
关联的自行车 |
该函数使用链接表与"员工和经销商"表之间的关系,获取报告中每一行的正确名称。 还可使用相关值进行计算。 有关详细信息和示例,请参阅 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 函数。