Работа с функциями DAX

Завершено

Библиотека функций DAX состоит из сотен функций, каждая из которых предназначена для определенной цели.

Поскольку язык DAX изначально создавался для надстройки Power Pivot для Microsoft Excel 2010, в нем доступно более 80 функций, которые также используются в Excel. Корпорация Майкрософт преднамеренно придерживалась такой стратегии разработки, чтобы пользователи Excel могли быстро освоить DAX.

Однако многих функций нет в Excel, так как они относятся исключительно к моделированию данных. В их числе:

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

Совет

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

Дополнительные сведения см. в справочнике по функциям DAX.

Функции из Excel

В следующих разделах рассматриваются некоторые полезные функции, с которыми вы, возможно, уже знакомы, так как они существуют в Excel.

Функция DAX IF проверяет, выполняется ли условие, указанное в качестве первого аргумента. Она возвращает одно значение, если условие равно TRUE, и другое значение, если условие равно FALSE. Синтаксис функции приведен ниже.

IF(<logical_test>, <value_if_true>[, <value_if_false>])

Совет

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

Если logical_test принимает значение FALSE, а значение value_if_false не задано, функция возвратит значение BLANK.

Здесь доступны многие функции Excel для формирования сводных данных, в том числе SUM, COUNT, AVERAGE, MIN, MAX и многие другие. Единственное отличие заключается в том, что в DAX передается ссылка на столбец, в то время как в Excel передается диапазон ячеек.

Также доступны многие функции Excel, для математических операций, текста, даты и времени, сведений и логических функций. Например, ниже приведена лишь небольшая часть функций Excel, которые доступны в DAX: ABS, ROUND, SQRT, LEN, LEFT, RIGHT, UPPER, DATE, YEAR, MONTH, NOW, ISNUMBER, TRUE, FALSE, AND, OR, NOT и IFERROR.

Функции, отсутствующие в Excel

Две полезные функции DAX, которые не относятся исключительно к моделированию, но при этом отсутствуют в Excel, — это DISTINCTCOUNT и DIVIDE.

Функция DISTINCTCOUNT

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

Функция DIVIDE

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

DIVIDE(<numerator>, <denominator>[, <alternate_result>])

Функция DIVIDE автоматически обрабатывает случаи деления на ноль. Если альтернативный результат не передается, а знаменатель равен нулю или значению BLANK, функция возвращает значение BLANK. Если альтернативный результат передан, вместо значения BLANK она возвращает его.

Эта функция удобна тем, что она избавляет от необходимости сначала проверять значение знаменателя в выражении. Она также лучше оптимизирована для проверки значения знаменателя по сравнению с функцией IF. При этом она обеспечивает существенный выигрыш в производительности, поскольку проверка деления на нуль требует значительных ресурсов. Более того, использование функции DIVIDE позволяет создать более лаконичное и изящное выражение.

Совет

Рекомендуется использовать функцию DIVIDE, если знаменатель представляет собой выражение, которое может возвращать нуль или значение BLANK. В случае, если знаменатель — константа, рекомендуется использовать оператор деления (/), о котором пойдет речь далее в этом модуле. В этом случае деление гарантировано завершится удачно, и выражение будет работать лучше, так как при этом не будет выполняться ненужное тестирование.