Обзор всех функций DAX

Предисловие

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

Содержание

Краткое содержание

Подробное содержание

Логические функции

Имя функции Описание
TRUE Возвращает логическое значение true.
FALSE Возвращает логическое значение false.
AND Проверяет значения аргументов и возвращает значение true, если оба аргумента имеют значение true. В противном случае возвращает значение false.
OR Проверяет, является ли один из аргументов true, и если да, то возвращает значение true. Функция возвращает значение false, если оба аргумента имеют значение false.
NOT Изменяет значение false на true, а true на false.
IF Проверяет выполнение условия, указанного в первом аргументе. Возвращает одно значение, если условие равно true, и другое значение, если условие равно false.
SWITCH Вычисляет выражение на основе списка значений и возвращает одно из нескольких возможных результирующих выражений.

К содержанию

Текстовые функции

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

Базовые операции со стоками

Имя функции Описание
CONCATENATE Соединяет две текстовые строки в одну текстовую строку (Чаще удобнее использовать оператор &).
CONCATENATEX Функция работает над таблицей и возвращает текстовую строку. Сначала для каждой записи таблицы вычисляет выражение, а затем сводит все вычесленные записи таблицы в одну строку с учетом разделителя из параметров.
REPT Повторяет текст заданное количество раз.
LEFT Возвращает указанное количество символов с начала текстовой строки.
RIGHT Функция RIGHT возвращает последний символ или последние символы текстовой строки, в зависимости от указанного количества символов.
TRIM Удаляет все пробелы из текста, за исключением единичных пробелов между словами.
LOWER Преобразует все буквы в текстовой строке в нижний регистр.
UPPER Преобразует все буквы в текстовой строке в верхний регистр.

Форматирование и преобразование типов

Имя функции Описание
FORMAT Преобразует значение в текст в указанном числовом формате. (см. также предопределенные форматы чисел и даты и времени. Пользовательские форматы чисел и даты и времени)
FIXED Преобразует значение в текст в указанном числовом формате.
VALUE Преобразует текстовую строку, представляющую число, в число.
CURRENCY Вычисляет аргумент и возвращает результат как тип данных currency.

Поиск и замена

Имя функции Описание
UNICHAR Возвращает символ Юникод по его числовому значению. Работает аналогично функции Excel ЮНИСИМВ
UNICODE Возвращает число (код знака), соответствующее первому знаку в тексте.
LEN Возвращает число символов в текстовой строке.
SEARCH Возвращает номер позиции, начиная с которой обнаружена подстрока. Поиск идет слева на право без учета регистра и с учетом диакритических знаков.
FIND Возвращает начальный номер позиции, начиная с которой обнаружена подстрока. Поиск идет с учетом регистра.
MID Возвращает строку символов из середины текстовой строки с учетом начальной позиции и длины.
REPLACE Заменяет часть текстовой строки другой текстовой строкой на основе указанного числа символов.
SUBSTITUTE Заменяет существующий текст новым в текстовой строке.
EXACT Сравнивает две текстовые строки и возвращает true, если они полностью одинаковые, и false в противном случае. Функция учитывает регистр, но не учитывает отличия форматирования. Можно использовать функцию, чтобы проверить входящий в документ текст.

К содержанию

Математические и тригонометрические функции

Математические функции в DAX похожи на математические и тригонометрические функции Excel. Однако имеются некоторые отличия в типах числовых данных.

Базовые операции с числами

Имя функции Описание
SQRT Возвращает квадратный корень числа.
POWER Возвращает результат возведения числа в степень.
SIGN Определяет знак числа, результата вычисления или значения в столбце. Функция возвращает значение 1, если число положительное, значение 0 (ноль), если число равно нулю, и значение -1, если число отрицательное.
QUOTIENT Выполняет деление и возвращает только целочисленную часть результата. Эта функция используется, если не нужно учитывать остаток от деления.

Округление

Имя функции Описание
ABS Возвращает абсолютное значение числа.
INT Округляет число в меньшую сторону до ближайшего целого.
ROUND Округляет число до указанного количества разрядов.
ROUNDDOWN Округляет число вниз, к нулю.
ROUNDUP Округляет число в большую сторону, от 0 (нуля).
FLOOR Округляет число в меньшую сторону (к нулю) до ближайшего числа, кратного заданной значимости.
CEILING Округляет число в большую сторону до ближайшего целого или до ближайшего числа, кратного заданной значимости.
ISO.CEILING Округляет число в большую сторону до ближайшего целого или до ближайшего числа, кратного заданной значимости.
MROUND Возвращает число, округленное до кратного заданной значимости.
TRUNC Усекает число до целого, удаляя дробную часть.

Операции со случайными числами

Имя функции Описание
RAND Возвращает случайное число, большее или равное 0 и меньшее 1, с равномерным распределением. Возвращаемое число изменяется каждый раз при пересчете ячейки, содержащей данную функцию.
RANDBETWEEN Возвращает случайное число, расположенное в интервале между двумя заданными числами.

Тригонометрические функции и константы

Имя функции Описание
PI Возвращает число $Pi$ с точностью до 15 знака.
LOG Возвращает логарифм числа по указанному основанию.
LOG10 Возвращает логарифм числа по основанию 10.
LN Возвращает натуральный логарифм числа. Натуральные логарифмы вычисляются по основанию $e$.
EXP Возвращает значение выражения $e^n$, где $n$ - заданное в параметрах число. Функция EXP обратна функции LN.
FACT Возвращает факториал числа.

К содержанию

Функции даты и времени

Многие функции даты и времени в DAX схожи с функциями даты и времени Excel. Однако в функциях DAX используется тип данных datetime Microsoft SQL Server.

Базовые операции с датой и временем

Имя функции Описание
YEAR Возвращает для заданной даты год в виде четырехзначного числа от 1900 до 9999.
MONTH Возвращает месяц в виде числа от 1 до 12.
DAY Возвращает день месяца в виде числа от 1 до 31.
HOUR Возвращает значение часа в виде числа от 0 до 23.
MINUTE Возвращает число минут от 0 до 59 по заданному значению даты и времени.
SECOND Возвращает для заданного значения времени число секунд в виде числа от 0 до 59.
WEEKDAY Возвращает число от 1 до 7, определяющее день недели для даты. По умолчанию дни недели считаются от воскресенья (1) до субботы (7).
WEEKNUM Возвращает номер недели для заданных даты и года в соответствии со значением тип возврата. Номер недели указывает числовую позицию недели относительно начала года.

Конструкторы даты и времени

Имя функции Описание
DATE Преобразует год, месяц, день, заданный в виде чисел в дату формате datetime.
TIME Преобразует часы, минуты и секунды, заданные в виде чисел, во время в формате datetime.
DATEVALUE Преобразует дату из текстового формата в дату в формате datetime.
TIMEVALUE Преобразует время из текстового формата во время в формате datetime.
TODAY Возвращает текущую дату без времени.
NOW Возвращает текущую дату и время.

Расширенные операции с датой

Имя функции Описание
DATEDIFF Возвращает интервал времени между двумя датами. (Тип интервала указывается в параметре Interval) Интервал может принимать следующие значения: second, minute, hour, day, week, month, quarter, year.
YEARFRAC Вычисляет долю года, представленную числом целых дней между двумя датами. Функция позволяет определить долю преимуществ или обязательств за целый год, приходящуюся на указанный срок.
EDATE Возвращает дату, отстоящую от заданной даты на указанное число месяцев (до или после). С помощью функции вычисляются сроки обязательств и платежей, приходящиеся на тот же день месяца, что и начало расчетного периода.
EOMONTH Возвращает дату окончания месяца (до или после указанного числа месяцев). С помощью функции вычисляются сроки обязательств и платежей, приходящиеся на конец месяца.

К содержанию

Интеллектуальные операции со временем

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

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

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

Функции возвращающие столбец дат

Столбец дат это таблица содержащую один столбец со значениями даты.

Операции с периодами

Имя функции Описание
DATEADD Столбец дат, сдвинутых в будущее или в прошлое от дат в текущем контексте на указанное количество интервалов.
DATESBETWEEN Столбец дат, за период с начальной до конечной даты.
DATESINPERIOD Столбец дат, который начинается с начальной даты и продолжается определенное количество интервалов.
PARALLELPERIOD Столбец дат, со сдвинутыми на несколько интервалов вперед или назад датами, от дат из столбца параметров в текущем контексте.
SAMEPERIODLASTYEAR Столбец дат, со сдвинутыми на один год назад от дат, из столбца параметров в текущем контексте.

Операции днем, месяцем, кварталом и годом

Тип День Месяц Квартал Год
Текущий - DATESMTD DATESQTD DATESYTD
Предыдущий PREVIOUSDAY PREVIOUSMONTH PREVIOUSQUARTER PREVIOUSYEAR
Следующий NEXTDAY NEXTMONTH NEXTQUARTER NEXTYEAR

Функции возвращающие ячейку с датой

Ячейка это таблица с одним столбцом и одной строкой.

Тип День Месяц Квартал Год
Первый FIRSTDATE STARTOFMONTH STARTOFQUARTER STARTOFYEAR
Последний LASTDATE ENDOFMONTH ENDOFQUARTER ENDOFYEAR

Функции возвращающие ячейку со значением

Ячейка это таблица с одним столбцом и одной строкой.

Имя функции Описание
FIRSTNONBLANK Возвращает первое значение в столбце column (с фильтрацией по текущему контексту), где выражение не является пустым.
LASTNONBLANK Возвращает последнее значение в столбце column (с фильтрацией по текущему контексту), где выражение не является пустым.

Функции возвращающие скалярное значение

Тип Месяц Квартал Год
Сальдо на начало OPENINGBALANCEMONTH OPENINGBALANCEQUARTER OPENINGBALANCEYEAR
Оборот TOTALMTD TOTALQTD TOTALYTD
Сальдо на конец CLOSINGBALANCEMONTH CLOSINGBALANCEQUARTER CLOSINGBALANCEYEAR

К содержанию

Информационные функции

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

Имя функции Описание
ISBLANK Проверяет, пустое ли значение, и возвращает значение true или false.
ISEMPTY Возвращает значение true, если таблица пустая.
ISLOGICAL Проверяет, является ли значение ошибкой, и возвращает true или false.
ISTEXT Проверяет, является ли значение текстом, и возвращает true или false.
ISNONTEXT Проверяет, не является ли значение текстом (пустые ячейки не являются текстом), и возвращает true или false.
ISNUMBER Проверяет, является ли значение числом, и возвращает true или false.
ISEVEN Возвращает значение ИСТИНА, если число четное, и значение ЛОЖЬ, если нечетное.
ISODD Возвращает значение ИСТИНА, если число нечетное, и значение ЛОЖЬ, если четное.
ISFILTERED Возвращает значение true, если columnName фильтруется напрямую. Если для столбца не задан фильтр или если фильтрация происходит потому, что выполняется фильтрация другого столбца в той же или в связанной таблице, функция возвращает значение false.
ISCROSSFILTERED Возвращает значение true при фильтрации по столбцу columnName или другому столбцу в этой же или связанной таблице.
[ISSUBTOTAL]() Возвращает значение true, если текущая строка содержит подытог для заданного столбца, в противном случае возвращает false.
ISONORAFTER Логическая функция, которая эмулирует поведение предложения Start At и возвращает true для строки, которая соответствует всем параметрам условия. Эта функция принимает переменное число аргументов кратное трем (т.н. троек), первые два аргумента в тройке - это сравниваемые выражения, а третий аргумент указывает порядок сортировки. Порядок сортировки по увеличению (по умолчанию) или уменьшению.
CONTAINS Возвращает значение true, если значения для всех столбцов, на которые имеются ссылки, существуют или содержатся в этих столбцах; в противном случае возвращает значение false.
CONTAINSROW Возвращает значение true, если существует по меньшей мере одна строка, в которой все столбцы имеют указанные значения.
HASONEFILTER Возвращает значение true, если число значений, отсортированных по columnName, равно одному; в противном случае возвращает значение false.
HASONEVALUE Возвращает значение true при фильтрации содержимого столбца columnName до одного уникального значения. В противном случае возвращается значение false.

Информация о пользователе

Имя функции Описание
USERNAME Возвращает имя домена и имя пользователя из учетных данных, предоставленных системе при подключении.
[USEROBJECTID]() Возвращает идентификатор объекта текущего пользователя из Azure AD для сервера анализа данных Azure и идентификатор безопасности текущего пользователя для локального сервера анализа данных.
[USERPRINCIPALNAME]() Возвращает имя субъекта-пользователя.

Обработка ошибок

Имя функции Описание
ERROR Принимает текстовое сообщение и порождает ошибку. Может использовать в формулах для описания недопустимого состояния пользовательских данных.
ISERROR Проверяет, является ли значение ошибкой, и возвращает true или false.
IFERROR Вычисляет выражение и возвращает указанное значение, если выражение ошибочно. В противном случае возвращает значение выражения.

К содержанию

Функции фильтрации

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

Имя функции Описание
LOOKUPVALUE Возвращает значение в столбце result_columnName для строки, соответствующей всем критериям, указанным с помощью параметров search_columnName и search_value.
CALCULATE Вычисляет выражение в контексте, изменяемом указанными фильтрами.
CALCULATETABLE Вычисляет табличное выражение в контексте, изменяемом данными фильтрами.
RELATED Возвращает связанное значение из другой таблицы.
RELATEDTABLE Вычисляет табличное выражение в контексте, изменяемом данными фильтрами.
ALL Возвращает все строки в таблице или все значения в столбце, не учитывая применяемые фильтры. Эта функция полезна для очистки фильтров и создания вычислений по всем строкам таблицы.
ALLEXCEPT Удаляет все фильтры контекста в таблице, кроме фильтров, примененных к указанным столбцам.
ALLNOBLANKROW Из родительской таблицы связи возвращает все непустые строки либо все различные значения столбца, за исключением пустых строк, не учитывая существующие фильтры контекста.
ALLSELECTED Удаляет фильтры содержимого из столбцов и строк в текущем запросе, сохраняя все остальные фильтры содержимого и явные фильтры. Функция ALLSELECTED возвращает содержимое, представляющее все строки и столбцы в запросе, сохраняя явные фильтры и фильтры содержимого, не относящиеся к фильтрам строк и столбцов. Эту функцию можно использовать для получения визуальных итогов в запросах.
FILTER Возвращает таблицу, представляющую подмножество другой таблицы или выражения.
FILTERS Возвращает значения, которые напрямую применяются в качестве фильтров к столбцу columnName.
DISTINCT Возвращает таблицу из одного столбца, содержащую уникальные значения из указанного столбца. Другими словами, повторяющиеся значения удаляются, и возвращаются только уникальные значения.

Примечание

Эту функцию нельзя использовать для возвращения результатов в ячейку или столбец на листе. Функция DISTINCT вкладывается в формулу, чтобы получить список уникальных значений, который можно передать другой функции, а затем выполнить подсчет, суммирование или другие операции.
VALUES Возвращает таблицу с одним столбцом, содержащую уникальные значения из указанного столбца или таблицы. Другими словами, повторяющиеся значения удаляются, и возвращаются только уникальные значения.

Примечание

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

Функция EARLIER полезна для вложенных вычислений, когда необходимо указать в качестве входного определенное значение и в зависимости от него проводить вычисления. В Microsoft Excel такие вычисления можно выполнять только в контексте текущей строки, однако в DAX можно сохранить входное значение, а затем выполнить вычисление с использованием данных из всей таблицы.

Функция EARLIER используется главным образом в контексте вычисляемых столбцов.
EARLIEST Возвращает текущее значение указанного столбца на внешнем этапе вычисления для данного столбца.
CUSTOMDATA Возвращает содержимое свойства CustomData в строке подключения.

К содержанию

Агрегатные и статистические функции

Язык выражений анализа данных предоставляет множество функций для вычисления агрегированных выражений. Эти функции:

  • Схожи со статистическими функциями, используемыми в Microsoft Excel.
  • Выполняют статистические выражения.
  • Позволяют отфильтровать столбец, прежде чем выполнять статистическую обработку или создавать статистические выражения на основе связанных таблиц.

Агрегатные функции над таблицами

Имя функции Описание
ADDCOLUMNS Добавляет вычисляемые столбцы к выбранной таблице или табличному выражению.
COUNTROWS Возвращает количество строк в таблице.
ROW Возвращает однострочную таблицу. Эта таблица содержит значения, являющиеся результатом выражения, заданного для каждого столбца.
TOPN Возвращает первые $N$ строк таблицы.
SUMMARIZE Возвращает сводную таблицу с вычисленными итогами для перечня сгруппированных столбцов.
SUMMARIZECOLUMNS Возвращает таблицу-сводку по набору групп.
GROUPBY Функция GROUPBY аналогична функции SUMMARIZE. Однако GROUPBY не выполняет неявный CALCULATE для любых добавочных столбцов, которые он добавляет. GROUPBY разрешает использовать новую функцию CURRENTGROUP() внутри функций агрегации в добавочных столбцах, которые она добавляет. GROUPBY пытается повторно использовать данные, которые были сгруппированы, что делает его высокоэффективным.
CROSSJOIN Возвращает декартово произведение $1 + N$ таблиц, где $N >= 1$.
GENERATE Возвращает декартово произведение всех строк в таблице 1 и таблицы, являющейся результатом вычисления таблицы 2 в контексте текущей строки из таблицы 1.
GENERATEALL Аналогично GENERATE.
INTERSECT Возвращает пересечение строк двух таблиц, сохраняя дубликаты.
NATURALINNERJOIN Выполняет внутреннее соединение таблицы с другой таблицей. Таблицы объединены в общие столбцы (по имени) в двух таблицах. Если две таблицы не имеют общих имен столбцов, возвращается ошибка.
NATURALLEFTOUTERJOIN Выполняет внутреннее соединение таблицы с другой таблицей. Таблицы объединены в общие столбцы (по имени) в двух таблицах. Если две таблицы не имеют общих имен столбцов, возвращается ошибка.
UNION Создает таблицу объединения (объединения) из пары таблиц.
EXCEPT Возвращает строки одной таблицы, которых не существует в другой таблице.
DATATABLE Создает таблицу с константными значениями средствами языка DAX. Полезно для использования в случае создания короткого редко изменчивого справочника на уровне DAX.

Агрегатные функции над столбцами и выражениями

Описание Обычные1 Тип A2 Тип X3 Тип AX4
Сумма SUM - SUMX -
Среднее AVERAGE AVERAGEA AVERAGEX -
Минимум MIN MINA MINX -
Максимум MAX MAXA MAXX -
Количество значений COUNT COUNTA COUNTX COUNTAX
Количество пустых значений COUNTBLANK - - -
Количество разных значений DISTINCTCOUNT - - -

Статистические функции над столбцами и выражениями

Описание Обычные1 Тип X3
Ранг RANK.EQ RANKX
Дисперсия всей совокупности VAR.P VARX.P
Дисперсия выборки VAR.S VARX.S
Стандартное отклонение всей совокупности STDEV.P STDEVX.P
Стандартное отклонение выборки STDEV.S STDEVX.S

Замечания к агрегатным и статистическим функциям

  1. Обычные - Позволяет вычислить функцию над столбцом. Принимает только числовые значения. Не производит преобразование данных из других типов данных в число, если ячейка содержит:
    • текст - функция не вычисляется и возвращает пусто;
    • логическое значение - ячейка игнорируется.
    • пустое значение - ячейка игнорируется.
    • нулевое значение - ячейка учитывается в расчете.
  2. Тип A - Позволяет вычислить функцию над столбцом. Производит преобразование данных других типов к числу (в отличии от обычных функций). Если ячейка содержит:
    • текст - если возможно производится преобразование к числу, иначе
    • логическое значение - истина = 1, ложь = 0; возвращается;
    • пустое значение - ячейка игнорируется.
    • нулевое значение - ячейка учитывается в расчете.
  3. Тип X - Позволяет вычислить функцию над выражением, а не над столбцом отличии от обычных функций и функций типа A. В принципе обработки не числовых значений аналогичная обычной функции.
  4. Тип AX - Позволяет вычислить функцию над выражением, а не над столбцом отличии от обычных функций и функций типа A. В принципе обработки не числовых значений аналогичная функциям типа A.

К содержанию

Функции над иерархическими данными

Функции для управления данными, представленными в моделях в виде иерархии типа «родители-потомки». Эти функции можно использовать для получения следующих данных:

  • Общее количество родительских элементов строки, количество уровней в иерархии до родительского элемента верхнего уровня,
  • Идентификатор родительского элемента, расположенного на n уровней выше текущей строки,
  • Идентификатор n-потомка, считая от верхнего уровня иерархии.
  • Определить, является ли определенный родительский элемент элементом иерархии текущей строки. (см. подробнее)
Имя функции Описание
PATH Возвращает строку текста с разделителями, содержащую идентификаторы всех родительских элементов текущего идентификатора, с самого старого до текущего.
PATHLENGTH Возвращает количество родительских элементов указанного элемента в заданных результатах функции PATH, включая сам элемент.
PATHCONTAINS Возвращает значение true, если указанный объект item существует в указанном объекте path.
PATHITEM Возвращает элемент с указанным параметром position из строки результатов вычисления функции PATH. Позиции считаются слева направо.
PATHITEMREVERSE Возвращает элемент с указанным параметром position из строки результатов вычисления функции PATH. Позиции вычисляются в направлении справа налево.

К содержанию

Прочие функции

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

Имя функции Описание
BLANK Возвращает пустое значение.

К содержанию

Синтаксические элементы

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

Например выражение VAR ... RETURN успешно используется для уменьшения сложности написания и чтения DAX функций с помощью построения промежуточных вычислений. А типы данных используются при построении справочника на уровне DAX с помощью функции DATATABLE.

Имя элемента Описание
VAR Сохраняет результат выражения как именованную переменную, которая затем может быть передана как аргумент другим выражениям. Когда результирующие значения были рассчитаны для выражения переменных, эти значения не изменяются, даже если эта переменная указана в другом выражении.
IN Возвращает значение true, если существует по меньшей мере одно значение, в которой все столбцы имеют указанные значения.
RETURN Возвращает результат вычисления формулы используется совместно с выражением VAR.
INTEGER Целое число
DOUBLE Число с плавающей точкой
STRING Строка
BOOLEAN Логическая переменная
CURRENCY Валюта
DATETIME Дата время

К содержанию