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