VAR

将表达式的结果存储为命名变量,然后作为参数传递给其他度量值表达式。 计算变量表达式的值后 DAX ,即使在另一个表达式中引用变量,这些值也不会更改。

语法

VAR <name> = <expression>

参数

术语 定义
name 变量的名称(标识符)。
不支持分隔符。 例如,“varName”或 [varName] 会导致错误。
支持的字符集:a-z、A-Z、0-9。
0-9 不作为第一个字符有效。
__(双下划线)作为标识符名称的前缀。
不支持其他特殊字符。
不允许保留关键字。
不允许现有表的名称。
不允许使用空格。
expression 返回 DAX 标量或表值的表达式。

返回值

包含表达式参数结果的命名变量。

言论

  • 作为参数传递给 VAR 的表达式可以包含另一个 VAR 声明。

  • 引用变量时:

    • 度量值不能引用在度量值表达式外部定义的变量,但可以引用表达式中定义的函数范围变量。
    • 变量可以引用度量值。
    • 变量可以引用以前定义的变量。
    • 无法使用 TableName[ColumnName] 语法引用表变量中的列。
  • 有关使用 VAR时的最佳做法,请参阅 使用变量改进 DAX 公式

  • 若要详细了解如何在 VAR 查询中使用 DAX,请参阅 DAX 查询

本文中的示例可用于示例 Adventure Works DW 2020 Power BI Desktop 模型。 若要获取模型,请参阅 DAX 示例模型

若要在不使用变量的情况下计算年增长率的百分比,可以创建三个单独的度量值。 此第一个度量值计算销售额的总和:

Sum of Sales Amount =
SUM ( Sales[Sales Amount] )

第二个度量值计算上一年的销售额:

Sales Amount PreviousYear =
CALCULATE ( [Sum of Sales Amount], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )

然后,可以创建第三个度量值,该度量值组合了另外两个度量值来计算增长百分比。 请注意,SalesAmount 的总和用于两个位置:首先检查是否存在销售,然后再次计算百分比。

Sum of SalesAmount YoY%: =
IF (
    [Sum of Sales Amount] && [Sales Amount PreviousYear],
    DIVIDE (
        ( [Sum of Sales Amount] - [Sales Amount PreviousYear] ),
        [Sales Amount PreviousYear]
    )
)

通过使用变量,可以创建计算相同结果的单个度量值:

YoY% =
VAR Sales =
    SUM ( Sales[Sales Amount] )
VAR SalesLastYear =
    CALCULATE ( SUM ( Sales[Sales Amount] ), SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
RETURN
    IF ( Sales && SalesLastYear, DIVIDE ( Sales - SalesLastYear, SalesLastYear ) )

通过使用变量,可以更易读的方式获得相同的结果。 由于表达式的结果存储在变量中,因此度量值的性能显著提高,因为 DAX 每次使用时都不会重新计算它。