Написание формул DAX

Завершено

Каждый тип вычисления модели (вычисляемая таблица, вычисляемый столбец или мера) определяются с помощью имени, за которым следует символ равенства (=) с последующей формулой DAX. Чтобы создать вычисление модели, используйте приведенный ниже шаблон.

<Calculation name> = <DAX formula>

Например, определение вычисляемой таблицы Ship Date, которая дублирует данные таблицы Date, будет следующим:

Ship Date = 'Date'

Формула DAX состоит из выражений, возвращающих результат. Результатом является табличный объект либо скалярное значение. Формулы вычисляемой таблицы должны возвращать табличный объект. Формулы вычисляемых столбцов и мер должны возвращать скалярное (одиночное) значение.

Формулы составляются из:

  • функций DAX;
  • операторов DAX;
  • ссылок на объекты модели;
  • постоянных значений (констант), таких как число 24 или литеральный текст "ФГ" (сокращение от "финансовый год");
  • переменных DAX;
  • пробелов.

Совет

При вводе формул DAX в Power BI Desktop можно использовать IntelliSense. IntelliSense — это вспомогательное средство для завершения кода, которое перечисляет функции и ресурсы модели. При выборе функции DAX оно также предоставляет ее определение и описание. Для быстрой сборки точных формул рекомендуется использовать IntelliSense.

Функции DAX

Как и Microsoft Excel, DAX — это функциональный язык. Это означает, что в формулах используются функции для решения конкретных задач. Как правило, функции DAX имеют аргументы, позволяющие передавать переменные. В формулах могут использоваться множество вызовов функций и вложенные функции.

В формуле после имен функций следует указывать круглые скобки. В скобках передаются переменные.

Примечание

Некоторые функции не принимают аргументы, или же их аргументы могут быть необязательными.

Работа с функциями DAX описывается далее в этом модуле.

Операторы DAX

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

Операторы DAX будут описаны более подробно далее в этом документе.

Ссылки на объекты модели

Формулы могут ссылаться только на объекты модели трех типов: таблицы, столбцы и меры. Формула не может ссылаться на иерархию или ее уровень. (Напомним, что уровень иерархии основан на столбце, поэтому формула может ссылаться на столбец уровня иерархии.)

Ссылки на таблицы

Когда вы ссылаетесь на таблицу в формуле, имя таблицы указывается в одиночных кавычках. Обратите внимание, что в приведенном ниже определении вычисляемой таблицы таблица Date заключена в одиночные кавычки.

Ship Date = 'Date'

Однако одиночные кавычки можно опустить, если выполняются оба следующих условия.

  1. Имя таблицы не содержит пробелы.
  2. Имя таблицы не является зарезервированным словом, используемым в DAX. Все имена функций и операторов DAX являются зарезервированными словами. Date — это имя функции DAX. Именно поэтому, когда вы ссылаетесь на таблицу с именем Date, имя этой таблицы должно быть заключено в одиночные кавычки.

В следующем определении вычисляемой таблицы можно опустить одиночные кавычки при ссылке на таблицу Airport:

Arrival Airport = Airport

Ссылки на столбцы

При ссылке на столбец в формуле имя столбца должно быть заключено в квадратные скобки. При необходимости ему может предшествовать имя таблицы. Например, следующее определение меры ссылается на столбец Sales Amount.

Revenue = SUM([Sales Amount])

Поскольку имена столбцов уникальны в пределах таблицы, но не обязательно уникальны в пределах модели, чтобы устранить неоднозначность ссылки на столбец, можно указать перед ним имя таблицы. Такой неоднозначный столбец называется полным. Некоторые функции DAX требуют передачи полных столбцов.

Совет

Чтобы повысить удобочитаемость формул, перед ссылкой на столбец рекомендуется всегда указывать имя таблицы.

Определение меры в предыдущем примере можно переписать следующим образом.

Revenue = SUM(Sales[Sales Amount])

Ссылки на меры

Как и в случае со ссылками на имена столбцов, при ссылке на меру в формуле имя меры должно быть заключено в квадратные скобки. Например, следующее определение меры ссылается на меры Revenue и Cost.

Profit = [Revenue] - [Cost]

У начинающих пользователей DAX тот факт, что ссылки на столбцы и меры всегда заключены в квадратные скобки, может вызывать путаницу при попытке прочитать формулу. Тем не менее, овладев основами DAX, вы научитесь определять, к какому типу относится объект, так как в формулах DAX столбцы и меры используются по-разному.

Совет

Перед ссылкой на меру можно указать имя таблицы. Однако меры являются объектами уровня модели. Хотя они назначены основной таблице, это только "косметические" связи для логического упорядочения мер в области Поля.

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

Дополнительные сведения см. в статье о ссылках на столбцы и меры.

Переменные DAX

Формулы могут объявлять переменные DAX для хранения результатов.

О том, как и когда использовать переменные DAX, вы узнаете далее в этом модуле.

Пробелы

Пробелы — это символы, которые можно использовать для форматирования формул простым и понятным способом. К символам пробелов относят:

  • пробелы;
  • знаки табуляции;
  • знаки возврата каретки.

Пробелы использовать необязательно. Они не изменяют логику формул и не оказывают негативного влияния на производительность. Настоятельно рекомендуем внедрить стиль форматирования и согласованно его применять. Также советуем принять во внимание следующие рекомендации.

  • Используйте пробелы между операторами.
  • Используйте знаки табуляции для добавления отступа к вложенным вызовам функций.
  • Используйте знаки возврата каретки для разделения аргументов функции, особенно в том случае, если они слишком длинные для размещения в одной строке. Таким образом, форматирование упрощает устранение неполадок, особенно если в формуле отсутствует круглая скобка.
  • Лучше пусть будет слишком много пробелов, чем слишком мало.

Совет

Чтобы ввести знак возврата каретки в строке формулы, нажмите клавиши SHIFT+ВВОД. Нажатие только клавиши ВВОД приведет к фиксации формулы.

Рассмотрим следующее определение меры, написанное в одной строке и включающее пять вызовов функций DAX.

Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))

Следующий пример содержит то же определение меры, но уже с форматированием, что облегчает чтение и понимание.

Revenue YoY % =
DIVIDE(
    [Revenue]
        - CALCULATE(
            [Revenue],
            SAMEPERIODLASTYEAR('Date'[Date])
    ),
    CALCULATE(
        [Revenue],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
)

Попробуйте отформатировать меру самостоятельно. Откройте файл Adventure Works DW 2020 M02.pbix для Power BI Desktop, а затем в области Поля разверните таблицу Sales и выберите меру Revenue YoY %. Используйте символы табуляции и знаки возврата каретки в строке формулы, чтобы получить тот же результат, что и в предыдущем примере. При добавлении символа возврата каретки не забудьте нажать клавиши SHIFT+ВВОД.

Это определение меры можно дополнительно улучшить, повысив его удобочитаемость и производительность. О том, как это сделать, будет рассказано далее в этом модуле.

Совет

Сторонний источник предлагает также отличное средство форматирования, DAX Formatter, которое может помочь в форматировании вычислений. Это средство позволяет вставлять вычисления и форматировать их. Затем можно скопировать отформатированное вычисление в буфер обмена и вставить его обратно в Power BI Desktop.