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


VAR

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

Синтаксис

VAR <name> = <expression>  

Параметры

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

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

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

Замечания

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

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

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

  • Дополнительные сведения об использовании VAR в запросе DAX см. в статье Запросы 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))  

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

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