Найти в Дзене

Делаем CALCULATE, или что там по СУММЕСЛИ в DAX

Привет, коллега! На связи снова ленивый аналитик. В прошлой статье мы начали погружаться в DAX в Excel. Если для тебя это 3 неизвестные странные буквы, то тебе сюда. И там же рассмотрели самые базовые функции DAX. Сегодня продолжим погружение с функцией, без которой жизни (эксельной) нет. CALCULATE - в буквальном смысле царица полейфункций DAX. Она базовая и продвинутая одновременно. И поскольку все мы здесь родом из Excel, объясню на примере сравнения с эксельными функциям. Для примеров будем использовать таблицу со списком сотрудников: Функция СУММЕСЛИ в Excel используется, если нужно посчитать сумму ячеек, соответствующую определенным критериям. Сделаем то же самое в DAX с CALCULATE. Для начала загрузим нашу таблицу в Power Pivot. Для этого щелкнем на любой ячейке таблицы (всю таблицу можно не выделять), перейдем на вкладку Power Pivot и нажмем Добавить в модель данных. В окне Создание таблицы проверим, что диапазон определился верно и установлена галочка, нажмем Ок. Нас перекинул
Оглавление

Привет, коллега! На связи снова ленивый аналитик.

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

Сегодня продолжим погружение с функцией, без которой жизни (эксельной) нет.

CALCULATE - в буквальном смысле царица полейфункций DAX. Она базовая и продвинутая одновременно.

-2

И поскольку все мы здесь родом из Excel, объясню на примере сравнения с эксельными функциям.

Для примеров будем использовать таблицу со списком сотрудников:

-3

Добавим таблицу в модель данных в Excel

Функция СУММЕСЛИ в Excel используется, если нужно посчитать сумму ячеек, соответствующую определенным критериям. Сделаем то же самое в DAX с CALCULATE.

Для начала загрузим нашу таблицу в Power Pivot.

Для этого щелкнем на любой ячейке таблицы (всю таблицу можно не выделять), перейдем на вкладку Power Pivot и нажмем Добавить в модель данных.

-4

В окне Создание таблицы проверим, что диапазон определился верно и установлена галочка, нажмем Ок.

-5

Нас перекинуло в окно надстройки Power Pivot. Нажмем здесь Сводная таблица на вкладке Главная.

(*На самом деле сводную таблицу создавать на этом этапе создавать не обязательно, меры можно рассчитывать и без нее. Но хотелось бы видеть результат этих мер сразу, поэтому пойдем по классическому пути)

-6

И выберем место расположения сводной таблицы.

СУММЕСЛИ(мн) в DAX

Для примера давайте рассчитаем фонд заработной платы (т.е. сумму зарплат) в отделе HR.

__________________________________

Как бы мы это сделали формулой Excel?

=СУММЕСЛИМН(Таблица1[Заработная плата];Таблица1[Отдел];"HR")

(обратите внимание, что я использовала функцию СУММЕСЛИМН, а не СУММЕСЛИ, т.к. она более гибкая)

Получили результат

-7

____________________________________

А теперь сделаем то же самое мерой в DAX при помощи функции CALCULATE.

Создадим меру. Как это сделать, можно почитать в предыдущей статье в разделе Как создать формулу DAX.

Дадим имя мере: ФОТ HR.

В поле Формула напишем следующую формулу:

-8

Теперь давайте разберем формулу:

=CALCULATE(SUM([Заработная плата]);'Таблица1'[Отдел]="HR")

Формула CALCULATE всегда содержит минимум 2 аргумента:

> Первый - агрегирующая функция. Это может быть SUM, AVERAGE и т.д.

-9

В данном случае это SUM([Заработная плата])

> Второй и последующие аргументы - фильтры.

Чтобы мера суммировала не весь столбец Заработная плата, а только по сотрудникам отдела HR - накладываем фильтр: 'Таблица1'[Отдел]="HR"

Выведем значение меры в сводную таблицу, добавив ее в поле Значения.

-10

Несколько фильтров в CALCULATE

Усложним задачу - посчитаем сумму зарплат не просто по отделу HR, а по должности Manager в отделе HR.

Для этого в фильтры функции CALCULATE добавим второй аргумент: 'Таблица1'[Должность]="Manager"

Теперь формула меры выглядит так:

=CALCULATE(SUM([Заработная плата]);'Таблица1'[Отдел]="HR";'Таблица1'[Должность]="Manager")

Результат:

-11

Теперь вы знаете, как работает функция CALCULATE.

В следующей статье рассмотрим более подробно, как ее можно использовать на практике. А чтобы не терять обновления контента, подписывайтесь на мой ТГ Ленивый аналитик.