Группировка продаж по SKU в Power Query: уровень детализации и проверка сумм
Как сгруппировать продажи по SKU, складу и типу операции в Power Query, отличить строки от единиц и проверить суммы на учебном примере.
Содержание статьи
Коротко о главном
Группировка продаж по SKU в Power Query начинается с определения одной строки результата: например, один SKU на одном складе с одним типом операции за выбранный период. Затем суммируйте количество и сумму по этому ключу, отдельно посчитайте исходные строки и сверьте контрольные итоги. Группировка сокращает число строк, но сама по себе не должна создавать или терять продажи.
- Набор полей группировки определяет, какие различия между операциями останутся видны.
- Count rows считает строки источника; это не обязательно число заказов или проданных единиц.
- Продажи и возвраты сначала полезно показать отдельно, сохранив принятую схему знаков.
- Совпадение общей суммы не подтверждает правильность распределения по товарам и складам.
1. Определите одну строку будущего отчёта
Допустим, нужно понять, с какого склада продаётся конкретный товар. Если сгруппировать только по SKU, сведения о складах исчезнут из итоговой таблицы. Для этой задачи нужен ключ SKU × склад. Если одновременно разбираете возвраты, добавьте тип операции. Ключ должен соответствовать вопросу, на который вы собираетесь ответить.
Ниже используется один кабинет, один отчётный период и рубли. Эти границы заданы заранее и одинаковы для всех записей. В общем наборе из нескольких кабинетов, периодов или валют добавьте соответствующие поля в ключ либо предварительно отберите нужный набор. Одинаковый код товара у двух продавцов не делает их операции одной группой.
Работайте с точным идентификатором варианта товара. Если размер или комплектация не входят в SKU, сохраните их отдельными признаками. Название товара для такого ключа ненадёжно: оно может совпасть у разных вариантов.
2. Подготовьте именно строки операций
Сохраните исходный файл и запрос с деталями. Уберите из рабочего набора служебную строку «Итого», иначе она повторно увеличит сумму. Проверьте период, единицы количества и определение денежного поля. Сумму продажи, выплату продавцу и прибыль нельзя смешивать под общим заголовком «Сумма».
Для примера считаем, что дубли загрузки уже исключены, пропусков и ошибок нет, количество и сумма имеют числовые типы. SKU хранится как текст. Продажи положительные, возврат отрицательный и по количеству, и по сумме. Это условная схема редакции, а не описание знаков или колонок конкретного экспорта WB либо Ozon.
Запишите контрольные значения до группировки: число записей, количество единиц и денежный итог. Если исходные поля пока неизвестны или содержат ошибки, сначала разберите исключения. Документация List.Sum указывает: функция складывает значения, отличные от null. Поэтому полученная сумма сама по себе не доказывает, что все исходные суммы были известны.
3. Задайте ключ и три разных расчёта
В редакторе Power Query откройте Group by / «Группировать по» на вкладке Home / «Главная». В режиме Advanced / «Дополнительно» Microsoft позволяет выбрать несколько полей ключа и расчётов. Для нашего набора укажите SKU, склад и тип операции. Названия выходных столбцов должны объяснять, что именно в них посчитано.
- «Единицы со знаком»: операция Sum по столбцу количества.
- «Сумма операций, ₽»: операция Sum по исходному денежному столбцу.
- «Исходных строк»: операция Count rows.
- Подтвердите группировку и убедитесь, что в результате есть все три поля ключа и три расчёта.
4. Пройдите учебный набор вручную
Возьмём пять придуманных записей. Для SKU A со склада «Север» есть две продажи: 2 штуки на 1 800 ₽ и 1 штука на 900 ₽. Со склада «Юг» продана ещё 1 штука A на 1 000 ₽. На «Север» возвращена 1 штука A: −1 и −900 ₽. Пятая запись — продажа 2 штук B с «Севера» на 1 200 ₽.
Две продажи A с «Севера» объединятся. Остальные записи образуют отдельные группы, поскольку отличаются товаром, складом или типом операции. Получатся четыре строки результата из таблицы. Внутри первой группы исходных записей две, а единиц три: эти показатели уже на маленьком наборе различаются.
| SKU / склад / операция | Исходных строк | Единиц со знаком | Сумма, ₽ |
|---|---|---|---|
| A / Север / продажа | 2 | 3 | 2 700 |
| A / Юг / продажа | 1 | 1 | 1 000 |
| A / Север / возврат | 1 | −1 | −900 |
| B / Север / продажа | 1 | 2 | 1 200 |
5. Сверьте строки, единицы и деньги
Сумма столбца «Исходных строк» должна остаться равной пяти: 2 + 1 + 1 + 1. Число строк самой сгруппированной таблицы теперь четыре — это ожидаемое изменение. Количество со знаком равно 3 + 1 − 1 + 2 = 5 единицам. Денежный итог: 2 700 + 1 000 − 900 + 1 200 = 4 000 ₽.
Отдельно видны продажи шести единиц на 4 900 ₽ и возврат одной единицы на 900 ₽. Нетто-показатель в пять единиц не следует подписывать «заказов». Номера заказов в учебных данных вообще не заданы; один заказ мог содержать несколько товарных строк.
Проверьте и группы: A на «Севере» должен содержать продажу трёх единиц и возврат одной. Ошибочное отнесение южной продажи к северному складу не изменит общие 4 000 ₽, но испортит ответ на исходный вопрос. Для проверки откройте сохранённые детали конкретной группы.
6. Сохраните возможность объяснить группу
Для диагностического запроса можно добавить расчёт All rows / «Все строки». Microsoft описывает его как вложенную таблицу исходных записей группы. Это позволяет рядом с итогом сохранить детали, из которых он получен. Предварительный просмотр такой таблицы может показывать не все строки; открывайте само значение Table для полного просмотра группы.
В рабочий отчёт необязательно выводить вложенные таблицы. Достаточно сохранить исходный запрос и воспроизводимый отбор по ключу. Не пытайтесь получить обратно индивидуальные операции из одной суммы: после агрегации без деталей их различия потеряны.
Если нужен определённый порядок товаров, добавьте сортировку после группировки. В документации Table.Group отдельно сказано, что порядок возвращаемых строк не гарантируется. Верхняя строка результата не становится лидером продаж автоматически.
7. Проверьте смысл показателей перед обновлением
Не применяйте одинаковую операцию ко всем числовым полям. У двух северных продаж A средняя сумма исходной строки равна 1 350 ₽, но средняя сумма на единицу — 2 700 ÷ 3 = 900 ₽. Для второго показателя нужны итоговая сумма и итоговое количество. Усреднение строк отвечает на другой вопрос.
После добавления следующего файла повторите контроль периода, состава операций и трёх итогов. Проверьте появившиеся SKU и склады. Совпадение сумм подтверждает сохранение выбранной величины при обработке, но не доказывает полноту исходной выгрузки, правильность знаков или прибыльность товара.
Принятый результат используйте для выбора отклонений, которые требуют разбора. В разделе HelpStat «Рука на пульсе» можно изучить доступный обзор бизнеса и определить следующий вопрос. Описанная группировка выполняется в Power Query; загрузка этой таблицы или её автоматическая проверка в HelpStat здесь не предполагается.
Источники и методика
Источники ниже помогают проверить определения и возможности отчётов. Методика разбора и учебные расчёты подготовлены редакцией HelpStat. Доступность отчётов и условия работы проверяйте в своём кабинете. Расчётные примеры в статье — учебные, а не результаты клиентов.
Как устроены материалы HelpStat
- Microsoft Learn: Group by, Sum, Count rows и All rows
- Microsoft Learn: Table.Group и порядок строк результата
- Microsoft Learn: List.Sum и значения null
Материал отражает сведения на указанную дату. Правила и условия работы площадок могут измениться. Редакционные принципы