В языке для анализа данных DAX множество функций. В этой статье мы рассмотрим самые частоиспользуемые из них.

Набор данных

Тренироваться мы будем на простой импортированной в PowerBI Google-таблице, в которой содержится информация о продажах интернет-магазина: приобретенные товары, сумма чека, идентификатор покупателя. В PowerBI Desktop эту таблицу назовем "Заказы".

Товары Сумма чека ID Покупателя Дата
Компьютер 30000 1 01.03.18
Компьютер, телевизор 50000 2 01.03.18
Планшет 12000 3 02.03.18
Смартфон 18000 4 03.03.18
Ноутбук 70000 5 03.03.18
Мышь 1000 1 04.03.18
Планшет 14000 2 05.03.18
Смарфон, компьютер 48000 7 06.03.18
Смартфон 18000 6 06.03.18
Компьютер 30000 1 06.03.18

Функция SUM в DAX

Для начала, давайте посчитаем, какую выручку принес нам интернет-магазин. Для этого нам необходимо просуммировать все значения в столбце "Сумма чека".

В этом нам поможет функция SUM с простым синтаксисом:

SUM()

Всё, что нужно для расчета выручки — создать DAX-формулу с указанием столбца "Сумма чека": 

Выручка = SUM('Заказы'[Сумма чека])

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

Функции COUNT и DISTINCTCOUNT

Предназначение данных функций — считать количество строк, их синтаксис так же прост, как и у функции SUM:

COUNT()
DISTINCTCOUNT()

Для начала, давайте посчитаем кол-во заказов в нашей таблице. Поскольку одному заказу соответстует одна строчка в нашей таблице, для вычисления количества заказов необходимо просто посчитать кол-во строк по любому из столбцов:

Заказы = COUNT('Заказы'[Товары])

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

Уникальные клиенты = DISTINCTCOUNT('Заказы'[ID Покупателя])

Функция DIVIDE

Функция DIVIDE — это замена стандартной операции деления в PowerBI. Я крайне рекомендую использовать ее в своих BI-моделях, поскольку в отличие от стандартной операции деления при использовании DIVIDE не возникает ошибки в случае деления на ноль.

Синтаксис этой функции уже немного сложнее:

DIVIDE(<Числитель>, <Знаменатель> [,<альтерн. результат>])

За значение созданной меры в случае деления на ноль отвечает параметр "альтернативный результат". Это необязательный параметр, по умолчанию он равен BLANK(), которая возвращает пустой результат.

Давайте вычислим средний чек нашего интернет-магазина, для этого нам нужно разделить выручку на кол-во заказов. Посколько обе эти меры у нас уже созданы, формула будет выглядеть следующим образом:

Средний чек = DIVIDE([Выручка];[Заказы])]

Если вам не нужны меры "Выручка" и "Заказы", вы можете использовать функции SUM и COUNT прямо внутри функции DIVIDE:

Средний чек = DIVIDE(SUM('Заказы'[Сумма чека]);COUNT('Заказы'[Товары]))