Россия Нет

Функции сводных таблиц в DAX: GROUPBY и SUMMARIZECOLUMNS в Power BI и Power Pivot


до конца распродажи осталось:


Курс DAX - это просто

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы продолжим изучать DAX функции, создающие в Power BI и Power Pivot сводные таблицы, а конкретно, это GROUPBY и SUMMARIZECOLUMNS.

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

Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.

Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».

Да, и еще один момент, в рамках распродажи до 29 марта 2024 г. у Вас имеется возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 60% (вместо 10000, всего за 4000 руб.)

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

Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 60% (до 29 марта 2024 г.): узнать подробнее

до конца распродажи осталось:

 

DAX функция GROUPBY в Power BI и Power Pivot

GROUPBY () — создает сводную таблицу, сгруппированную по указанным столбцам (название столбцов конфигурируется из названия самой исходной таблицы и названия исходного столбца для группировки).

Также, часто я встречаю раздельное написание этой функции, как DAX GROUP BY, что неправильно…

Синтаксис:

GROUPBY (
    'Таблица';
    [Столбец 1]; [Столбец 2]; ...; [Столбец N];
    "Имя столбца 1"; Выражение 1;
    "Имя столбца 2"; Выражение 2;
    "..."; ...;
    "Имя столбца N"; Выражение N
)

Где:

  • ‘Таблица’ — исходная существующая таблица или табличное выражение, значения которых мы хотим сгруппировать
  • [Столбец] — столбец для группировки
  • «Имя столбца» — имя создаваемого столбца для значений группировки
  • Выражение — вычисляемое выражение для значений группировки

Выражение обязательно должно содержать статистическую DAX функцию формата X (SUMX, MAXX, AVERAGEX…), во входных параметрах которой, в качестве таблицы подставляется служебное выражение CURRENTGROUP ().

Давайте разберем все параметры GROUPBY, в том числе и служебное выражение CURRENTGROUP на примере формулы.

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

Так как в Excel (Power Pivot) в модели данных создавать вычисляемые таблицы нельзя, то пример будем рассматривать на основе Power BI — в ней можно создавать физические вычисляемые таблицы. А в Excel вычисляемые таблицы создаются только виртуально, во время вычисления самих формул.

Итак, в Power BI Desktop имеется исходная таблица «Продажи Менеджеров»:

 

Создадим во вкладке «Моделирование» вычисляемую таблицу на основе формулы с участием DAX функции GROUPBY:

Сводные Продажи По Менеджерам = 
GROUPBY (
    'ПродажиМенеджеров';
    'ПродажиМенеджеров'[Отдел]; 'ПродажиМенеджеров'[Менеджер];
    "Продажи";
    SUMX (
        CURRENTGROUP ();
        'ПродажиМенеджеров'[Продажи]
    )
)

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

Во втором и третьем параметрах (вторая строка параметров) мы прописали столбцы [Отдел] и [Менеджер]. Именно по ним и будет происходить группировка всех значений.

В четвертом параметре (третья строка параметров) мы прописали название нового столбца, в котором расположатся агрегированные значения в создаваемой сводной таблице.

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

Итак, результатом выполнения формулы на основе DAX функции GROUPBY будет следующая сводная таблица:

 

В этой созданной таблице при помощи GROUPBY нам удалось собрать все продажи воедино по каждому менеджеру каждого отдела в организации.

Теперь, рассмотрим еще одну похожую функцию по формированию сводных таблиц.

 

DAX функция SUMMARIZECOLUMNS в Power BI и Power Pivot

SUMMARIZECOLUMNS () — очень похожая DAX функция на GROUPBY, а тем более на SUMMARIZE. Она также создает сводную таблицу, но, в данном случае, с возможностью фильтрации группируемых столбцов.

Синтаксис:

SUMMARIZECOLUMNS (
    [Столбец 1]; [Столбец 2]; ...; [Столбец N];
    Фильтр;
    "Имя Столбца 1"; Выражение 1;
    "Имя Столбца 1"; Выражение 1;
    "..."; ...;
    "Имя Столбца N"; Выражение N
)

Синтаксис функции SUMMARIZECOLUMNS очень похож на синтаксис GROUPBY, который мы рассматривали выше, за исключением лишь той разницы, что:

  • в первом параметре не нужно прописывать исходную таблицу;
  • в выражении мы можем использовать не только X функции, но и любые другие функции агрегирования
  • здесь появился еще один параметр — фильтр, по которому производится фильтрация столбцов для группировки

Рассмотрим пример формулы на основе DAX функции SUMMARIZECOLUMNS. Как и выше, пример мы будем рассматривать в Power BI на основе все той же исходной таблицы «Продажи Менеджеров»:

 

Создадим в Power BI Desktop во вкладке «Моделирование» новую вычисляемую таблицу и пропишем там следующую формулу с участием функции SUMMARIZECOLUMNS:

СводныеПродажиПоМенеджерам = 
SUMMARIZECOLUMNS (
    'ПродажиМенеджеров'[Отдел]; 'ПродажиМенеджеров'[Менеджер];
    FILTER ('ПродажиМенеджеров'; 'ПродажиМенеджеров'[Менеджер] <> "Петров");
    "Продажи";
    SUM ('ПродажиМенеджеров'[Продажи])
)

В первой строке мы прописали столбцы [Отдел] и [Менеджер], по которым будет происходить группировка значений.

Во второй строке прописали фильтр, созданный на основе DAX функции FILTER. Данная функция фильтрует исходную таблицу «Продажи Менеджеров» по столбцу [Менеджер], где его значения не должны быть равны значению «Петров».

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

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

Итак, результатом выполнения формулы выше на основе работы DAX функции SUMMARIZECOLUMNS будет следующая сводная таблица:

 

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

Итак, на этом, с разбором DAX функций, создающих сводные таблицы в Power BI и Power Pivot, все.

Также, напоминаю Вам, в рамках распродажи до 29 марта 2024 г. у Вас имеется шикарная возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 60% (вместо 10000, всего за 4000 руб.)

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

Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 60% (до 29 марта 2024 г.): узнать подробнее

До конца распродажи осталось:


Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(26 голосов, в среднем: 4.8 из 5 баллов)
[Экспресс-видеокурс] Быстрый старт в языке DAX

 
 
Антон БудуевУспехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
 
 
 
 

Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
 
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.

 
Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

до конца распродажи осталось:


Курс DAX - это просто

Автор статьи:
Категория: Язык функций и формул DAX для Power BI и Excel (Power Pivot)

Добавить комментарий

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных


  1. Oleg:

    Ребят, обратите внимание: SUMMARIZECOLUMNS до сих пор НЕ работает с внешним контекстом фильтра. Для большинства моих задач это критично, поэтому заменяю на FILTER+ADDCOLUMNS+SUMMARIZE

  2. Александр:

    Спасибо, Ваша статья помогла. И вообще уже третий день ковыряю power bi, Ваши статьи помогают больше всего, большое спасибо, продолжайте в том же духе.

    1. Антон Будуев:

      Александр, благодарю за обратную связь