Группировка строк в excel power query

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

В Power Query одни и те же значения можно сгруппировать в одном или нескольких столбцах в одну сгруппированную строку. Столбец можно группировать с помощью агрегатной функции или группы по строке. 

Пример

Следующие процедуры основаны на этом примере данных запроса:

Пример данных перед агрегированием

Вы можете группировать данные с помощью агрегатной функции, например Sum и Average. Например, необходимо свести итоговые суммы проданных единиц на уровне страны и канала продаж, сгруппированные по столбцам Страна и Канал продаж .

  1. Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Запрос > Изменить. Дополнительные сведения см. в статье Создание, изменение и загрузка запроса в Excel.

  2. Выберите Главная > Группировать по.

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

  4. Чтобы добавить другой столбец, выберите Добавить группирование

    Совет     Чтобы удалить или переместить группирование, выберите Дополнительно (…) рядом с полем имя группировки.

  5. Выберите столбцы Страна и Канал продаж .

  6. В следующем разделе:

    Имя нового столбца    введите «Всего единиц» для нового заголовка столбца.

    Операции    Выберите Сумма. Доступные агрегаты: Sum, Average, Median, Min, Max, Count Rows и Count Distinct Rows.

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

  7. Нажмите кнопку ОК.

Result (Результат)

Результаты группировки по агрегации

Операция строки не требует столбца, так как данные группируются по строке в диалоговом окне Группировать по. При создании нового столбца можно выбрать два варианта:


Счетчик строк
    , отображающий количество строк в каждой сгруппированной строке.

Группа: число строк

Последовательность действий

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

  1. Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Запрос > Изменить. Дополнительные сведения см. в статье Создание, загрузка и изменение запроса в Excel.

  2. Выберите Главная > Группировать по.

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

  4. Добавьте столбец для агрегирования, выбрав Добавить агрегат в нижней части диалогового окна. 

    Совет     Чтобы удалить или переместить агрегат, выберите Дополнительно (…) рядом с полем столбца.

  5. В разделе Группировать по выберите столбцы Страна и Канал продаж .

  6. Создайте два новых столбца, выполнив следующее:

    Агрегирование агрегирования    столбца Units с помощью операции Sum. Назовите этот столбец Всего единиц.

    Все строки     Добавьте новый столбец Products с помощью операции Все строки. Назовите этот столбец Всего продуктов. Так как эта операция действует для всех строк, вам не нужно делать выбор в разделе Столбец , поэтому он недоступен.

  7. Нажмите кнопку ОК.

Result (Результат)

Примеры процедур группирования данных

См. также

Справка по Power Query для Excel

Группирование или суммирование строк (docs.com)

Нужна дополнительная помощь?

Файлы к уроку:

  • Для спонсоров Boosty
  • Для спонсоров VK
  • YouTube
  • VK

Ссылки:

  • Страница курса
  • Плейлист YouTube
  • Плейлист ВК

Описание

В этом уроке мы научимся выполнять агрегирование текста с группировкой в Power Query.

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

Например, такие 3 строки таблицы:

Вам нужно преобразовать в одну такую:

Решение

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

Примененные функции

  • Excel.CurrentWorkbook
  • Excel.Workbook
  • File.Contents
  • Table.TransformColumnTypes
  • Table.Group
  • Text.Combine

Код

let
   path = Excel.CurrentWorkbook(){[Name = "Путь"]}[Content]{0}[Column1],
   source = Excel.Workbook(File.Contents(path & "Данные.xlsx"), null, true),
   get_table = source{[Item = "CuVo", Kind = "Table"]}[Data],
   types = Table.TransformColumnTypes(get_table, {{"Date", type date}}),
   grouped = Table.Group(
      types,
      {"Date", "Voc_Id", "Category"},
      {{"Name", each Text.Combine([Name], ";#(lf)"), type text}}
   )
in
   grouped

Этот урок входит в Продвинутый курс Power Query

Номер урока Урок Описание
1 Power Query Продвинутый №1. Введение в Язык М 1 В этом уроке мы узнаем, почему стоит изучать формулы М в Power Query. Какие преимущества нам дает знание языка формул М.
2 Power Query Продвинутый №2. Введение в Язык М 2 В этом втором вводном уроке по языку формул Power Query мы познакомимся с самыми основами языка форму М.
3 Power Query Продвинутый №3. Уровни владения Языком М В этом уроке мы узнаем зачем изучать Power Query. Какой процент задач вы сможете решить только с пользовательским интерфейсом, а какой процент вы сможете решить с использованием функций М? Об этом узнаем в это видео.
4 Power Query Продвинутый №4. Объекты Power Query В этом уроке мы познакомимся с объектами Power Query: Table, List, Record.
5 Power Query Продвинутый №5. Объект List 1 В этом уроке мы начнем знакомиться с объектом List в Excel Power Query. Создадим простые List (списки) из чисел и букв. Познакомимся с функциями для создания листов/списков из чисел и дат. Научимся создавать список названий месяцев. Изучим функцию List.FindText.
Создадим лист с условием при помощи List.Transform. Найдем среднее значение в листе/списке при помощи простой функции List.Average.
6 Power Query Продвинутый №6. Объект List 2 В этом уроке мы продолжим знакомиться с объектом List. Мы узнаем как создавать листы, как ссылаться на элементы листа и изучим несколько полезных формул листа.
7 Power Query Продвинутый №7. Объект Record (Запись) В этом уроке немного подробнее изучим объект Record в Power Query. Record — это набор пар ключ-значение. Каждый Record — это строка таблицы.
В этом уроке мы изучим ссылки на Record и функции Record.
8 Power Query Продвинутый №8. Объект Table (Таблица) В этом уроке мы познакомимся с объектом Table в Power Query. Что это такое и какие основные функции применяются к этому объекту.
9 Power Query Продвинутый №9. Ссылки 1 В этом уроке из курса по Power Query мы повторим как ссылаться на строки таблицы.
10 Power Query Продвинутый №10. Ссылки 2 В этом уроке из курса обучения Power Query будем практиковать ссылки. Помимо ссылок еще повторим и изучим несколько техник и команд: объединение листов по вертикали, Table.Skip, Table.PromoteHeaders.
11 Power Query Продвинутый №11. Ссылки 3 В этом уроке курса по Power Query мы повторим ссылки на запись, ссылки на значение, ссылки на другую строку. Также вспомним как создавать таблицу параметров.
12 Power Query Продвинутый №12. Ссылки 4: Ссылка на другой шаг запроса и много практики В этом уроке мы повторим/научимся ссылаться на ячейку, которая находится в другом шаге запроса.
13 Power Query Продвинутый №13. Пользовательские функции В этом уроке мы научимся создавать пользовательские функции. Разберем пользовательские функции на примере столбца с нарастающим итогом.
14 Power Query Продвинутый №14. #datetime, #duration: работа с датой и временем В этом уроке по Excel Power Query вы научитесь пользоваться функциями #duration и #datetime для создания даты/времени и длительности. Изучите функцию DateTimeZone.UtcNow() Узнаете как складывать данные в формате datetime и duration. Познакомитесь с функцией DateTime.LocalNow(). Научитесь преобразовывать дату/время в текст при помощи DateTime.ToText()
15 Power Query Продвинутый №15. Текстовые функции / Функции Text.* В этом уроке по формулам Power Query мы разберем функции группировки, сведения, отмены сведения, сортировки и фильтра.
Номер урока Урок Описание
16 Power Query Продвинутый №16. Важные операции: Группировка, Пивот, Анпивот, Сортировка В этом уроке по формулам Power Query мы разберем функции группировки, сведения, отмены сведения, сортировки и фильтра.
17 Power Query Продвинутый №17. Нюансы консолидации из разных книг/листов Excel и List PositionOf В этом уроке мы узнаем о некоторых нюансах объединения таблиц по вертикали из разных файлов.
18 Power Query Продвинутый №18. Разделить столбец на строки, Text.Trim В этом уроке мы разделим текстовый столбец на строки. Данные скучены в одной ячейке. Нужно разбить ее на несколько.
19 Power Query Продвинутый №19. Заголовки в двух строках, List.Zip В этом уроке мы обработаем заголовки, которые находятся в двух строках. Нам понадобится функция List.Zip
20 Power Query Продвинутый №20. Вычисления в Power Query В этом уроке мы научимся выполнять вычисления в Power Query и в Power Pivot.
21 Power Query Продвинутый №21. Скользящее среднее, List Range В этом уроке мы научимся считать скользящее среднее в Power Query. Для примера рассчитаем скользящее среднее предыдущих 13 значений. Нам пригодятся функции List.Range и List.Average.
22 Power Query Продвинутый №22. Агрегирование текста, группировка В этом уроке вы научитесь выполнять группировку с агрегированием текстовых значений в Power Query.
23 Power Query Продвинутый №23. Трансформация столбцов, Table.TransformColumns В этом уроке мы изучим функцию Table.TransformColumns.
24 Power Query Продвинутый №24. Разгруппировка, Скрытые возможности Table.ReplaceValue В этом уроке мы научимся делать разгруппировку данных в Power Query, а также изучим скрытые возможности функции Table.ReplaceValue.
25 Power Query Продвинутый №25. Функция List.Accumulate В этом уроке мы с нуля разберем функцию List.Accumulate. Сначала я объясню цикл For, а потом мы закрепим знания на несложных, но очень интересных примерах.
26 Power Query Продвинутый №26. Множественная замена текста c List.Accumulate и VBA В этом уроке мы научимся делать множественную текстовую замену с помощью Power Query. Для этого мы воспользуемся функцией List.Accumulate. Также разберем как решить эту задачу при помощи VBA.
27 Power Query Продвинутый №27. Генерируем список URL (Text.Format, List.Generate, List.Accumulate) В этом уроке мы сгенерируем список веб-страниц, в которых будет меняться параметр id. Сделаем это всего лишь в одном шаге при помощи функций Text.Format, List.Generate и List.Accumulate.
28 Power Query Продвинутый №28. Множественная текстовая замена c List.Generate В этом уроке мы научимся выполнять множественную текстовую замену в Power Query с помощью функции List.Generate. Для спонсоров канала я так же расскажу как это делать в VBA.
29 Power Query Продвинутый №29. Генераций таблиц с List.Generate, График платежей по кредиту Продолжим изучать функцию List.Generate. Создадим при помощи этой функции целую таблицу, которая будет представлять из себя график платежей по кредиту.
30 Power Query Продвинутый №30. Нарастающий итог с List.Generate В этом уроке мы разберем функцию List.Generate, а также при помощи этой функции выполним нарастающий итог, который в сотни раз быстрее предыдущих версий нарастающего итога.

Группировка в Power Query — ключевой шаг в любом алгоритме. Часто группировка меняет как количество строк, так и количество столбцов. 
Сегодня разберём все типы группировки на примерах.

Данные можно агрегировать разными способами: 

  1. группировать и суммировать данные,
  2. группировать и подсчитывать количество строк, 
  3. группировать и находить среднее значение,
  4. группировать и находить максимальное/минимальное значение,
  5. группировать и находить количество уникальных строк,
  6. группировать «все строки» во вложенную таблицу.

Рассмотрим на примерах разные возможности группировки данных.

Группировка с суммой

Пример: сгруппировать выручку по офисам продаж.

Шаг1: Добавить таблицы в Power Query

Выбираем: вкладка Данные → Получить данные → Из других источников → Из таблицы / диапазона.  Для новых версий Excel: вкладка Данные → Из таблицы / диапазона. 

Шаг2: Группируем и суммируем данные

Выберите в таблице столбец, по которому будем группировать данные. В нашем примере это столбец «Офис продаж». В редакторе Power Query на вкладке «Главная» выбираем «Группировать по»:

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

Power Query по умолчанию предлагает для группировки ранее выбранный нами столбец «Офис продаж». Задаем новое имя «Сумма выручки», из списка операций выбираем способ вычисления «Сумма» и указываем по какому столбцу делать суммирование, в нашем примере это «Выручка».

На выходе получаем выручку, сгруппированную по офисам продаж. 

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

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

Группировку в Power Query можно делать по нескольким столбцам. Пример: посчитать количество сделок по каналам продаж с разбивкой по городам.

После загрузки таблицы в Power Query, вызываем команду «Группировать по» на вкладке Главная.

В открывшемся диалоговом окне нам нужно поставить точку напротив «Подробнее», чтобы мы смогли сделать группировку по нескольким столбцам и задать расширенные параметры. Чтобы добавить дополнительные столбцы для группировки, кликаем на кнопку «Добавить группирования»:

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

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

Группировка «Все строки» (All Rows)

Функция группировки скрывает еще одну неочевидную возможность: выводить все сгруппированные строки в виде таблицы без агрегирования. 

Пример: получить данные по лучшим результатам продажам в разрезе по городам и по каналам продаж.

После загрузки таблицы в Power Query, на вкладке «Главная» вызываем команду «Группировать по».

В открывшемся диалоговом окне нам нужно поставить точку напротив «Подробнее». Кликаем на кнопку «Добавить группирования» и добавляем дополнительный столбец «Канал продаж»:

После этого задаем новое имя «Продажи», из списка операций выбираем способ вычисления «Все строки»:

В таблице появился новый столбец – Продажи. Он весьма необычен. Каждая Table содержит все строки, которые были сгруппированы по столбцам Город и Канал продаж из вашей исходной таблицы. Чтобы увидеть это, кликните пробел справа от слова Table. Внизу появится поле с новой таблицей. Таблица внизу окна показывает какие строки использовались для создания сгруппированных значений:

ВАЖНО: На панели предварительного просмотра сведений могут отображаться не все строки, которые использовались при группировке. Вы можете нажать на «Table», чтобы просмотреть все строки, относящиеся к соответствующей операции группировки.

Чтобы получить максимальное значение продаж, создадим пользовательский столбец с формулой. В редакторе Power Query перейдите на вкладку Добавление столбца –> Настраиваемый столбец.

В открывшемся окне задаем имя нового столбца «Максимальные продажи», и вводим функцию Table.Max:

Используемая формула проверяет таблицу и извлекает максимальное значение. Поиск ведется в столбце Продажи, поскольку он содержит таблицы, которые необходимо проверить. Максимум берется по столбцу «Продажи, тыс. руб» таблицы. 

Однако, функция Table.Max возвращает не значение, а запись. Эта запись содержит не только максимальное значение, но и все детали.

Столбец «Максимальные продажи» можно развернуть с помощью кнопки Развернуть. с двуглавой стрелкой. Выберите нужные столбцы для финальной таблицы, отключите «Использовать исходное имя столбца как префикс». Нажмите OK.

Щелкните правой кнопкой мыши по столбцу Продажи — Удалить.

Мы получим финальную таблицу с максимальными продажами по каждому каналу продаж с детализацией по городам.

Мы специально использовали группировку «Все стоки» (All Rows), хотя для расчёта максимума можно было обойтись и без неё. Я не рекомендую злоупотреблять фукнцией «Все строки», потому что она может излишне загружать память компьютера. В нашем случае было бы проще сразу сделать группировку с вычислением максимальных значений, не используя All Rows. Именно так мы и рекомендуем делать, чтобы ваш алгоритм работал быстрее.

Что происходит с нашими таблицами при группировке? Для этого разберем функцию, с помощью которой и осуществляется группировка данных — Table.Group. На простом примере разберем её аргументы:

Первый аргумент – предыдущий шаг. В нашей формуле это — #»Измененный тип». В качестве источника используем таблицу из предыдущего шага.

Второй аргумент – список столбцов параметров, по которым мы делаем группировку. В нашей формуле это — {«Офис продаж»}. 

Третий аргумент – список списков. В нашем примере один список — {{«Сумма выручки», each List.Sum([Выручка]), type nullable number}}.

 «Сумма выручки» название нового столбца показателя.

 List.Sum – функция для суммирования значений (может быть выбрана любая другая функция вычислений).

 [Выручка] – название столбца, к которому применяется расчет. 

type nullable number – формат нового столбца, в нашем примере формат числовой.

Варианты группировки в Power Query

На примерах выше мы рассмотрели не все возможности группировки. Операций, которые можно применить при группировке, существенно больше.

В таблице ниже описана каждая из этих операций:

Название операции

Категория

Описание

Сумма Работа с столбцами Суммирует все значения из столбца
Среднее Работа с столбцами Вычисляет среднее значение из столбца
Медиана Работа с столбцами Вычисляет медиану из столбца
Мин. Работа с столбцами Вычисляет минимальное значение из столбца
Макс . Работа с столбцами Вычисляет максимальное значение из столбца
Считать строки Операция со строкой Вычисляет общее количество строк из заданной группы
Количество уникальных строк Операция со строкой Вычисляет количество уникальных строк из заданной группы
Все строки Операция со строкой Выводит все сгруппированные строки в табличное значение без агрегирования

У Power Query большие возможности группировки, но иногда требуются и ручные доработки кода. Лично мне часто нужна группировка для получения списка. Например, мы хотим получить список товаров для каждого отдела продаж. 
Возьмём формулу для суммирования выручки:

{{"Сумма выручки", each List.Sum([Выручка]), type nullable number}} 

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

{{"Список товаров", each [Товар]}} 

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

Заключение

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

Будьте осторожны в применении группировки «Все строки» (All Rows). Данный тип группировки может привести к проблемам загрузки или обновления отчёта, так как сильно нагружает Power Query, особенно при больших таблицах. Лучше использовать его с осторожностью или обходиться другими методами.

Это продолжение перевода книги Кен Пульс и Мигель Эскобар. Язык М для Power Query. Главы не являются независимыми, поэтому рекомендую читать последовательно.

Предыдущая глава    Содержание    Следующая глава

Иногда при работе с большими наборами данных перед анализом в сводных таблицах необходимо сгруппировать записи в источнике. Power Query позволяет группировать и суммировать данные. Чтобы продемонстрировать, как группировка работает в Power Query, рассмотрим продажи производителя футболок:

Ris. 14.1. Prodazhi futbolok

Рис. 14.1. Продажи футболок

Скачать заметку в формате Word или pdf, примеры в формате архива

Вы хотите вывести в таблице:

  • Объем продаж в день по каждому каналу
  • Продукт-лидер ежедневных продаж, в процентах от объема продаж

Подключение к данным

Откройте Grouping.xlsx. Кликните любую ячейку в Таблице на листе Sales –> Данные –> Из таблицы/диапазона. В редакторе Power Query щелкните правой кнопкой мыши столбец Date –> Тип изменения –> Дата. Поскольку при импорте таблицы Power Query автоматически присвоил данным в столбце Date тип Дата/Время, появится окно с предложением заменить текущее преобразование типов данных или добавить новое. Поскольку автозамена Power Query вам не нужна, кликните Заменить текущее.

Ris. 14.2. Zamenit ili dobavit shag

Рис. 14.2. Заменить или добавить шаг

Импортированная таблица подготовлена для группирования и суммирования данных:

Ris. 14.3. Tablitsa gotova k obrabotke

Рис. 14.3. Таблица готова к обработке; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Группировка данных

Выберите столбец Date –> Щелкните правой кнопки мыши Группировать по…

Ris. 14.4. Ishodnyj vid okna Gruppirovat po

Рис. 14.4. Исходный вид окна Группировать по

В этом окне можно определить элементы, которые вы хотите сгруппировать, а также то, как вы хотите их сгруппировать. Power Query по умолчанию предлагает для группировки только столбец Date. Если вы оставите эту настройку в таком виде, у вас будут данные, сгруппированные только по дате, но не по каналу, поэтому вам нужно внести изменения. Кликните переключатель Подробнее, добавьте группировку по столбцу ChannelName (рис. 14.5). Поскольку вы хотите подсчитать общее количество каналов, а также общее количество продуктов по каналам, вам необходимо выполнить следующие шаги:

  • Измените имя нового столбца на Products Sold
  • Кликните кнопку Добавить агрегирование
  • Дайте новому столбцу имя Sales $ и выберите операцию суммирования по столбцу Amount

Ris. 14.5. Dobavlenie urovnej gruppirovki i agregirovaniya stolbtsov

Рис. 14.5. Добавление уровней группировки и агрегирования столбцов

Кликните Ok. Данные сгруппируются:

Ris. 14.6. Dannye sgruppirovany po date i kanalu

Рис. 14.6. Данные сгруппированы по дате и каналу

Обратите внимание, что данные можно агрегировать различными способами:

Ris. 14.7. Dostupnye funktsii agregirovaniya dannyh

Рис. 14.7. Доступные функции агрегирования данных

В качестве дополнительного бонуса функция Группировать по удаляет из таблицы все столбцы, которые не были указаны в области Группировка (выделено на рис. 14.5). Теперь вы можете загрузить эти данные в Таблицу Excel. Измените имя запроса на Grouped. Главная –> Закрыть и загрузить.

Создание сводной статистики

Теперь вам нужно найти самый продаваемый продукт в каждом сегменте и какую долю в процентах от общего объема продаж он составляет. Чтобы подстраховаться на случай ошибок, создайте копию запроса. В книге Excel на панели Запросы и подключения щелкните правой кнопкой мыши запрос Grouped –> Дублировать. Запрос откроется в редакторе Power Query. Переименуйте его Performance.

Ris. 14.8. Tochnaya kopiya zaprosa Grouped

Рис. 14.8. Точная копия запроса Grouped

Определение топового продукта

Для этого нужно изменить шаг Сгруппированные строки и добавить еще один шаг. Нажмите на шестеренку рядом с шагом Сгруппированные строки. Откроется окно Группировать по. Добавьте новый столбец агрегирования – Details. Задайте для него операцию Все строки. Нажиме Ok.

Ris. 14.9. Dobavlenie stolbtsa agregirovaniya

Рис. 14.9. Добавление столбца агрегирования

В таблице появился новый столбец – Details (см. рис. 14.10). Он весьма необычен. Каждая Table содержат сведения о том, какие строки из предыдущего шага были суммированы. Чтобы увидеть это, кликните пробел справа от слова Table (1). Внизу появится поле с новой таблицей (2).

Ris. 14.10. Tablitsa vnizu okna pokazyvaet kakie stroki ispolzovalis dlya sozdaniya sgruppirovannyh znachenij

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

Создайте пользовательский столбец с формулой. В редакторе Power Query перейдите на вкладку Добавление столбца –> Настраиваемый столбец. Назовите столбец MaxRecord, используйте для него следующую формулу =Table.Max([Details],"Amount"). Нажимать Ok.

Ris. 14.11. Dobavlenie polzovatelskogo stolbtsa

Рис. 14.11. Добавление пользовательского столбца

Ris. 14.12. Polzovatelskij stolbtse No chto on oznachaet

Рис. 14.12. Пользовательский столбце… Но что он означает?

Давайте вернемся на мгновение назад. Используемая формула (рис. 14.11) проверяет таблицу и извлекает максимальное значение. Поиск ведется в столбце Details, поскольку он содержит таблицы, которые необходимо проверить. Максимум берется по столбцу Amount таблицы. Имя Amount взято в кавычки по правилам синтаксиса функции. Однако, функция Table.Max возвращает не значение, а запись. Эта запись не просто содержит максимальное значение, она содержит все детали, соответствующие максимальному значению (вы узнаете больше о записях в главе 19).

Столбец MaxRecord можно развернуть с помощью кнопки с двуглавой стрелкой, чтобы поместить отдельные компоненты в столбцы таблицы запроса. Щелкните стрелку Развернуть в столбце MaxRecord. Выберите ProductName и Amount, отключите Использовать исходное имя столбца как префикс. Нажмите Ok.

Ris. 14.13. Razvorachivanie stolbtsa MaxRecord v stolbtsy ProductName i Amount

Рис. 14.13. Разворачивание столбца MaxRecord в столбцы ProductName и Amount

Щелкните правой кнопкой мыши столбец Details –> Удалить. Щелкните правой кнопкой мыши столбец ProductName –> Переименовать –> TopSeller. Щелкните правой кнопкой мыши столбец Amount –> Переименовать –> TopSeller $. В результате – у вас таблица, которая суммирует продажи по дате и каналу и показывает самый продаваемый товар, а также сумму его продаж:

Ris. 14.14. Dannye sgruppirovannye po date i kanalu s dannymi o samom prodavaemom produkte

Рис. 14.14. Данные, сгруппированные по дате и каналу с данными о самом продаваемом продукте

Остается определить процентный вклад топового продукта в ежедневные продаж. Перейдите на вкладку Добавление столбца –> Настраиваемый столбец. Переименуйте его в TS % of Sales и введите следующую формулу: =[#"TopSeller $"]/[#"Sales $"].

Ris. 14.15. Nastraivaemyj stolbets TS protsent of Sales

Рис. 14.15. Настраиваемый столбец TS % of Sales

Не дайте скобкам и кавычкам запутать вас)) Самый простой способ построить формулу – выбрать имя поля справа, и нажать Вставить (больше о вводе формул вы узнаете в главе 21). Округлите значения. Кликните правой кнопкой мыши на столбце TS % of Sales –> Преобразование –> Округление –> Округление –> Число десятичных знаков –> 2.

Загрузите запрос в таблицу Excel. Назначьте столбцу TS % of Sales процентный формат:

Ris. 14.16. Itogovyj analiz

Рис. 14.16. Итоговый анализ

title description author ms.date ms.author ms.custom

How to GROUP BY or summarize rows

In Power Query, you can group or summarize the values in various rows into a single value by grouping the rows according to the values in one or more columns. Power Query has two types of Group By operations: aggregate a column with an aggregate function, or perform an operation.

ptyx507x

12/12/2022

miescobar

edited

Grouping or summarizing rows

In Power Query, you can group values in various rows into a single value by grouping the rows according to the values in one or more columns. You can choose from two types of grouping operations:

  • Column groupings.

  • Row groupings.

For this tutorial, you’ll be using the following sample table.

:::image type=»complex» source=»media/group-by/initial-table.png» alt-text=»Sample initial table.»:::
Table with columns showing Year (2020), Country (USA, Panama, or Canada), Product (Shirt or Shorts), Sales channel (Online or Reseller), and Units (various values from 55 to 7500)
:::image-end:::

Where to find the Group by button

You can find the Group by button in three places:

  • On the Home tab, in the Transform group.

    Group by on the Home tab.

  • On the Transform tab, in the Table group.

    Group by on the Transform tab.

  • On the shortcut menu when you right-click to select columns.

    Group by on the shortcut menu.

Use an aggregate function to group by one or more columns

In this example, your goal is to summarize the total units sold at the country and sales channel level. You’ll use the Country and Sales Channel columns to perform the group by operation.

  1. Select Group by on the Home tab.
  2. Select the Advanced option, so you can select multiple columns to group by.
  3. Select the Country column.
  4. Select Add grouping.
  5. Select the Sales Channel column.
  6. In New column name, enter Total units, in Operation, select Sum, and in Column, select Units.
  7. Select OK

Group by dialog box with aggregated columns.

This operation gives you the following table.

Sample output table with Country, Sales Channel, and Total units columns.

Operations available

With the Group by feature, the available operations can be categorized in two ways:

  • Row level operation
  • Column level operation

The following table describes each of these operations.

Operation Name Category Description
Sum Column operation Sums up all values from a column
Average Column operation Calculates the average value from a column
Median Column operation Calculates the median from a column
Min Column operation Calculates the minimum value from a column
Max Column operation Calculates the maximum value from a column
Percentile Column operation Calculates the percentile, using an input value from 0 to 100, from a column
Count distinct values Column operation Calculates the number of distinct values from a column
Count rows Row operation Calculates the total number of rows from a given group
Count distinct rows Row operation Calculates the number of distinct rows from a given group
All rows Row operation Outputs all grouped rows in a table value with no aggregations

[!NOTE]
The Count distinct values and Percentile operations are only available in Power Query Online.

Perform an operation to group by one or more columns

Starting from the original sample, in this example you’ll create a column containing the total units and two other columns that give you the name and units sold for the top-performing product, summarized at the country and sales channel level.

Sample output table with operations.

  1. Use the following columns as Group by columns:

    • Country
    • Sales Channel
  2. Create two new columns by following these steps:

    1. Aggregate the Units column by using the Sum operation. Name this column Total units.
    2. Add a new Products column by using the All rows operation.

    Group by dialog box with a non-aggregate column.

After that operation is complete, notice how the Products column has [Table] values inside each cell. Each [Table] value contains all the rows that were grouped by the Country and Sales Channel columns from your original table. You can select the white space inside the cell to see a preview of the contents of the table at the bottom of the dialog box.

Table details preview pane.

[!NOTE]
The details preview pane might not show all the rows that were used for the group-by operation. You can select the [Table] value to see all rows pertaining to the corresponding group-by operation.

Next, you need to extract the row that has the highest value in the Units column of the tables inside the new Products column, and call that new column Top performer product.

Extract the top performer product information

With the new Products column with [Table] values, you create a new custom column by going to the Add Column tab on the ribbon and selecting Custom column from the General group.

Add a custom column.

Name your new column Top performer product. Enter the formula Table.Max([Products], "Units" ) under Custom column formula.

Custom column formula with Table.Max.

The result of that formula creates a new column with [Record] values. These record values are essentially a table with just one row. These records contain the row with the maximum value for the Units column of each [Table] value in the Products column.

Result of the custom column formula with Table.Max.

With this new Top performer product column that contains [Record] values, you can select the expand. expand icon, select the Product and Units fields, and then select OK.

Expand operation for record value on the Top performer product column.

After removing your Products column and setting the data type for both newly expanded columns, your result will resemble the following image.

Final table with all transformations.

Fuzzy grouping

[!NOTE]
The following feature is only available in Power Query Online.

To demonstrate how to do «fuzzy grouping,» consider the sample table shown in the following image.

Table with nine rows of entries that contain various spellings and capitalizations of the name Miguel and William.

The goal of fuzzy grouping is to do a group-by operation that uses an approximate match algorithm for text strings. Power Query uses the Jaccard similarity algorithm to measure the similarity between pairs of instances. Then it applies agglomerative hierarchical clustering to group instances together. The following image shows the output that you expect, where the table will be grouped by the Person column.

Table showing entries for Person as "Miguel" and "Mike," and Frequency as 3 and 2, respectively."

To do the fuzzy grouping, you perform the same steps previously described in this article. The only difference is that this time, in the Group by dialog box, you select the Use fuzzy grouping check box.

Fuzzy grouping check box in the Group by dialog box.

For each group of rows, Power Query will pick the most frequent instance as the «canonical» instance. If multiple instances occur with the same frequency, Power Query will pick the first one. After you select OK in the Group by dialog box, you’ll get the result that you were expecting.

Fuzzy grouping sample final table, no transform table.

However, you have more control over the fuzzy grouping operation by expanding Fuzzy group options.

Fuzzy group options.

The following options are available for fuzzy grouping:

  • Similarity threshold (optional): This option indicates how similar two values must be to be grouped together. The minimum setting of 0 will cause all values to be grouped together. The maximum setting of 1 will only allow values that match exactly to be grouped together. The default is 0.8.
  • Ignore case: When comparing text strings, case will be ignored. This option is enabled by default.
  • Group by combining text parts: The algorithm will try to combine text parts (such as combining Micro and soft into Microsoft) to group values.
  • Show similarity scores: Show similarity scores between the input values and the computed representative values after fuzzy grouping. Requires the addition of an operation such as All rows to showcase this information on a row-by-row level.
  • Transformation table (optional): You can select a transformation table that will map values (such as mapping MSFT to Microsoft) to group them together.

For this example, a transformation table will be used to demonstrate how values can be mapped. The transformation table has two columns:

  • From: The text string to look for in your table.
  • To: The text string to use to replace the text string in the From column.

The following image shows the transformation table used in this example.

Table showing From values of mike and William, and To values of Miguel and Bill.

[!IMPORTANT]
It’s important that the transformation table has a the same columns and column names as shown above (they have to be «From» and «To»), otherwise Power Query will not recognize these.

Return to the Group by dialog box, expand Fuzzy group options, change the operation from Count rows to All rows, enable the Show similarity scores option, and then select the Transformation table drop-down menu.

Fuzzy grouping sample transformation table drop-down menu.

After you select the transformation table, select OK. The result of that operation gives you the following information:

Fuzzy grouping sample final table with transform table.

In this example, the Ignore case option was enabled, so the values in the From column of the Transformation table are used to look for the text string without considering the case of the string. This transformation operation occurs first, and then the fuzzy grouping operation is performed.

The similarity score is also shown in the table value next to the person column, which reflects exactly how the values were grouped and their respective similarity scores. You can expand this column if needed or use the values from the new Frequency columns for other sorts of transformations.

[!NOTE]
When grouping by multiple columns, the transformation table performs the replace operation in all columns if replacing the value increases the similarity score.

See also

Add a custom column
Remove duplicates

Понравилась статья? Поделить с друзьями:
  • Группировка столбцов в excel плюс сверху
  • Группировка столбцов excel vba
  • Группировка списков в excel
  • Группировка с шагом excel
  • Группировка рабочих листов в excel