VAR

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

语法

DAX
VAR <name> = <expression>  

parameters

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

返回值

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

备注

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

  • 引用变量时:

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

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

示例

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

DAX
Sum of SalesAmount = SUM(SalesTable[SalesAmount])  

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

DAX
SalesAmount PreviousYear =
    CALCULATE([Sum of SalesAmount],
    SAMEPERIODLASTYEAR(Calendar[Date])
    )  

然后,可以创建第三个度量值,该度量值组合其他两个度量值以计算增长百分比。 注意,“销售额总和”度量值在两个位置使用;首先确定是否有销售,然后再计算一个百分比。

DAX
Sum of SalesAmount YoY%: = 
    IF([Sum of SalesAmount] ,  
        DIVIDE(([Sum of SalesAmount] – [SalesAmount PreviousYear]), [Sum of SalesAmount])
    )  

使用变量可以创建得出相同结果的度量值:

DAX
YoY% =
  VAR Sales = 
      SUM(SalesTable[SalesAmount])  
  VAR SalesLastYear =
      CALCULATE ( SUM ( SalesTable[SalesAmount] ), SAMEPERIODLASTYEAR ( 'Calendar'[Date] ) )

  return if(Sales, DIVIDE(Sales – SalesLastYear, Sales))  

使用变量可以获得相同结果,且更具可读性。 由于表达式的结果存储在变量中,因此可以显著提高度量值的性能,因为无需在每次使用时重新计算。

使用变量改进 DAX 公式
DAX 查询