Поделиться через


VAR

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

Синтаксис

VAR <name> = <expression>

Параметры

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

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

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

Замечания

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

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

    • Меры не могут ссылаться на переменные, определенные вне выражения меры, но могут ссылаться на переменные функциональной области, определенные в выражении.
    • Переменные могут ссылаться на меры.
    • Переменные могут ссылаться на ранее определенные переменные.
    • Столбцы в табличных переменных нельзя ссылаться с помощью синтаксиса TableName[ColumnName].
  • Рекомендации по использованию VARсм. в статье Использование переменных для улучшения DAX формул.

  • Дополнительные сведения о том, как используется в запросе, см. в запросов.

Пример

Чтобы вычислить процент роста по сравнению с годом без использования переменной, можно создать три отдельных меры. Первая мера вычисляет сумму продаж:

Sum of SalesAmount = SUM(SalesTable[SalesAmount])

Вторая мера вычисляет сумму продаж за предыдущий год:

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

Затем можно создать третью меру, которая объединяет другие две меры, чтобы вычислить процент роста. Обратите внимание, что мера Sum of 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))

Используя переменную, вы можете получить тот же результат, но более читаемым способом. И поскольку результат выражения хранится в переменной, производительность меры может быть значительно улучшена, так как она не должна пересчитываться при каждом использовании.

Использование переменных для улучшения формул DAXDAX запросов