了解行上下文
现在,您已经创建了计算列,接下来学习如何计算它们的公式。
计算列的公式是针对每一个表行计算的。 此外,它是在行上下文中进行计算的,即当前行。 考虑截止会计年度计算列定义:
Due Fiscal Year =
"FY"
& YEAR('Due Date'[Due Date])
+ IF(
MONTH('Due Date'[Due Date]) <= 6,
1
)
为每一行计算公式时,'Due Date'[Due Date]
列引用会返回该行 的列值。 您可能通过在 Excel 表中使用公式而熟悉本概念。
但是,行上下文不会延伸到表之外。 如果您的公式需要引用其他表中的列,您有两个选项:
- 如果这些表直接或间接相关,则可以使用
RELATED
或RELATEDTABLE
DAX 函数。RELATED
函数检索关系一侧的值,而RELATEDTABLE
检索多侧的值。RELATEDTABLE
函数可返回表对象。 - 当表不相关时,您可以使用
LOOKUPVALUE
DAX 函数。
通常,尽可能尝试使用 RELATED
函数。 由于关系和列数据的存储和索引方式不同,该函数的性能通常优于 LOOKUPVALUE
函数。
现在,将以下计算列定义添加到 Sales 表中:
Discount Amount =
(
Sales[Order Quantity]
* RELATED('Product'[List Price])
) - Sales[Sales Amount]
计算列定义将 Discount Amount 列添加到 Sales 表中。 Power BI 计算 Sales 表中每行的计算列公式。
Order Quantity 和 Sales Amount 列的值是在行上下文中检索的。 但是,由于 List Price 列属于 Product 表,需要 RELATED
函数来检索销售产品 的定价值。
当对计算列公式进行计算时,使用行上下文。 当使用一类函数(称为迭代器函数)时,也会使用行上下文。 使用迭代器函数可以灵活地创建复杂的汇总。 迭代器函数将在后面的模块中介绍。