VAR

将表达式的结果存储为命名变量,然后作为参数传递给其他 measure 表达式。 为变量表达式计算生成的 values 后,这些 values 执行 not 更改,evenif 变量在另一个表达式中引用。

语法

VAR <name> = <expression>

参数

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

返回 value

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

言论

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

  • 引用变量时:

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

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

若要在不使用变量的情况下 calculate 百分比 year-over-year 增长,可以创建三个单独的度量值。 此 firstmeasure 计算销售额 Sum:

Sum of SalesAmount = SUM(SalesTable[SalesAmount])

second measure 计算 previousyear的销售金额:

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

然后,可以创建第三个 measure,将另外两个度量值组合在一起,以 calculate 增长百分比。 请注意,SalesAmount Sum 的 measure 用于两个位置:first 确定有销售 if,然后再次 calculate 百分比。

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

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

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

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

通过使用变量,可以获得相同的结果,但以更易读的方式。 And 因为表达式的结果存储在变量中,所以 measure的性能可以显著改善,因为它不必重新计算每个 time 它使用。

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