VAR

Сохраняет результат выражения в виде именованной переменной, которую затем можно передать в качестве аргумента другим выражениям мер. После DAX вычисления значений для выражения переменной эти значения не изменяются, даже если вы ссылаетесь на переменную в другом выражении.

Синтаксис

VAR <name> = <expression>

Параметры

Срок Определение
name Имя переменной (идентификатор).
Разделители не поддерживаются. Например, "varName" или [varName] приводит к ошибке.
Поддерживаемый набор символов: a-z, A-Z, 0-9.
Значение 0-9 не является допустимым в качестве первого символа.
__ (двойной подчеркивание) допускается в качестве префикса имени идентификатора.
Другие специальные символы не поддерживаются.
Зарезервированные ключевые слова не разрешены.
Имена существующих таблиц не допускаются.
Пустые пробелы не допускаются.
expression DAX Выражение, возвращающее скалярное или табличное значение.

Возвращаемое значение

Именованной переменной, содержащей результат аргумента выражения.

Замечания

  • Выражение, переданное в качестве аргумента для VAR, может содержать другое объявление VAR.

  • При ссылке на переменную:

    • Меры не могут ссылаться на переменные, определенные вне выражения меры, но могут ссылаться на переменные функциональной области, определенные в выражении.
    • Переменные могут ссылаться на меры.
    • Переменные могут ссылаться на ранее определенные переменные.
    • Нельзя ссылаться на столбцы в табличных переменных с помощью синтаксиса TableName[ColumnName].
  • Рекомендации по использованию VARсм. в статье Использование переменных для улучшения 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 не пересчитывает его при каждом использовании.