活动
VAR
将表达式的结果存储为命名变量,然后作为参数传递给其他度量值表达式。 为变量表达式计算结果值后,即使该变量在另一个表达式中引用,这些值也不会更改。
VAR <name> = <expression>
术语 | 定义 |
---|---|
name |
变量的名称(标识符)。 不支持分隔符。 例如,“varName”或 [varName] 将导致错误。 支持的字符集:a-z、A-Z、0-9。 0-9 作为第一个字符无效。 __(双下划线)作为标识符名称的前缀。 不支持其他特殊字符。 不允许保留关键字。 不允许现有表的名称。 不允许使用空格。 |
expression |
返回标量或表值的 DAX 表达式。 |
包含表达式参数结果的命名变量。
作为参数传递给 VAR 的表达式可以包含另一个 VAR 声明。
引用变量时:
- 度量值不能引用在度量值表达式外部定义的变量,但可以引用表达式中定义的函数范围变量。
- 变量可以引用度量值。
- 变量可以引用以前定义的变量。
- 无法通过 TableName[ColumnName] 语法引用表变量中的列。
有关使用 VAR 时的最佳做法,请参阅 使用变量改进 DAX 公式。
若要详细了解如何在 DAX 查询中使用 VAR,请参阅 DAX 查询。
若要在不使用变量的情况下计算年增长率的百分比,可以创建三个单独的度量值。 此第一个度量值计算销售额的总和:
Sum of SalesAmount = SUM(SalesTable[SalesAmount])
第二个度量值计算上一年的销售额:
SalesAmount PreviousYear =
CALCULATE([Sum of SalesAmount],
SAMEPERIODLASTYEAR(Calendar[Date])
)
然后,可以创建第三个度量值,该度量值组合了另外两个度量值来计算增长百分比。 请注意,SalesAmount 度量值的总和用于两个位置:首先确定是否存在销售,然后再次计算百分比。
Sum of SalesAmount YoY%: =
IF([Sum of SalesAmount] ,
DIVIDE(([Sum of SalesAmount] – [SalesAmount PreviousYear]), [Sum of SalesAmount])
)
通过使用变量,可以创建计算相同结果的单个度量值:
YoY% =
VAR Sales =
SUM(SalesTable[SalesAmount])
VAR SalesLastYear =
CALCULATE ( SUM ( SalesTable[SalesAmount] ), SAMEPERIODLASTYEAR ( 'Calendar'[Date] ) )
return if(Sales, DIVIDE(Sales – SalesLastYear, Sales))
通过使用变量,可以获得相同的结果,但以更易读的方式。 由于表达式的结果存储在变量中,因此可以显著提高度量值的性能,因为它不必每次使用时重新计算。