Операции · Практическое руководство

Сопоставление SKU в Power Query: как добавить себестоимость без дублей

Как соединить продажи и справочник себестоимости по SKU: выбрать ключ, найти повторные соответствия и проверить суммы после объединения в Power Query.

5 мин чтения
Иллюстрация к статье: Сопоставление SKU в Power Query: как добавить себестоимость без дублей
Если у вас одна минута

Коротко о главном

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

  • Ключ товарного соответствия и уникальный идентификатор продажи решают разные задачи.
  • Проверяйте уникальность подходящей записи справочника до раскрытия результата соединения.
  • Сохраните исходные суммы: добавление справочных полей не должно создавать дополнительные продажи.
  • Неизвестную себестоимость и её долю в выручке показывайте отдельно.

1. Определите, что означает одна строка

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

Повторение SKU в продажах нормально: один товар покупают много раз. Удалять такие строки ради уникальности нельзя. Нужны два разных контроля: идентификатор исходной записи позволяет заметить размножение продажи, а товарный ключ связывает её со справочником. Если источник не даёт отдельного ID, сохраните неизменную копию выгрузки и добавьте контрольный индекс внутри этой копии; он не становится универсальным идентификатором для следующих выгрузок.

2. Соберите ключ без неоднозначности

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

Документация Microsoft по Merge queries описывает соединение по одному или нескольким столбцам. Типы сопоставляемых столбцов должны совпадать; при выборе нескольких столбцов важен одинаковый порядок в обеих таблицах. Для кодов с ведущими нулями сохраните текстовый тип ещё при импорте. Восстановление уже повреждённого артикула — отдельная задача, соединение её не исправит.

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

3. Найдите ключи с несколькими соответствиями

Создайте проверочную копию запроса справочника. Сгруппируйте её по выбранному ключу и посчитайте строки в каждой группе. Microsoft описывает для Group by операцию Count rows. Отберите группы с количеством больше одного: именно их нужно разобрать до расчёта.

Две цены закупки для одного SKU не обязательно являются ошибочными дублями. Это могут быть разные партии или периоды. Нельзя молча оставить первую строку либо взять среднюю цену без принятого способа учёта. Если нужна действующая на дату себестоимость, должны быть определены интервалы действия и проверено, что для даты продажи подходит ровно один интервал. Простого соединения только по SKU для этого недостаточно.

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

4. Присоедините справочник и сохраните ненайденные товары

Для учебной задачи добавления полей удобно начать с левого внешнего соединения: Microsoft определяет его как сохранение строк левой таблицы и добавление совпадений справа. Когда соответствия нет, справочное поле получает null. Это помогает увидеть продажи, для которых справочник ещё не подготовлен.

  • Зафиксируйте исходное число строк, количество единиц и сумму выручки в запросе продаж.
  • Откройте Merge queries / «Объединить запросы»: продажи выберите слева, проверенный справочник справа.
  • Выберите одинаковые ключевые столбцы в согласованном порядке.
  • Укажите Left outer / левое внешнее соединение и подтвердите операцию.
  • Раскройте добавленный столбец таблицы и оставьте нужные справочные поля: себестоимость, её единицу и версию.
  • Сразу сравните контрольные итоги и отдельно отберите null в поле себестоимости.

5. Учебный пример: выручка выросла без новых заказов

Предположим, есть три строки продаж. Товар A продан в количестве двух штук с общей выручкой 2 400 ₽, B — одна штука на 1 800 ₽, C — одна штука на 900 ₽. Исходный итог: три строки, четыре штуки, 5 100 ₽. В справочнике для A ошибочно оставлены две одновременно подходящие записи себестоимости: 500 и 550 ₽. Для B есть одна запись 700 ₽, для C записи нет.

При раскрытии двух совпадений A его продажа появляется дважды. Выручка становится 7 500 ₽, количество — шесть штук, хотя новых продаж не было. Это следствие неоднозначной связи, а не рост бизнеса. Null для C при этом не должен исчезнуть из контрольного итога.

Учебный расчёт редакции: продажи неизменны, повтор возникает только из-за двух подходящих записей A. Для C себестоимость неизвестна.
КонтрольДо соединенияПосле ошибочного раскрытияПосле исправления связи
Строк продаж343
Товаров, шт.464
Исходная выручка, ₽5 1007 5005 100
Строк без себестоимостиЕщё не проверены1: товар C1: товар C

6. Проверьте не только общий итог

После подтверждения правильной записи A верните справочник к однозначному соответствию и пересчитайте соединение. Если подтверждена себестоимость 500 ₽ за штуку, известная стоимость A и B составит 2 × 500 + 700 = 1 700 ₽. Расчёт по C остаётся незавершённым: 900 ₽ выручки относятся к товару с неизвестной себестоимостью. Вычитать из этой суммы ноль и называть результат прибылью нельзя.

Проверьте каждую исходную запись: она сохранилась ровно один раз, если задача состояла только в добавлении справочных полей. Затем сверьте суммы по кабинету, SKU и дате. Общий итог может случайно совпасть при компенсирующих ошибках, поэтому одних 5 100 ₽ недостаточно.

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

Частые вопросы и следующий шаг

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

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

Как использовать результат дальше? Сохраните проверенный запрос и контрольные итоги. В разделе «Финансы WB и Ozon» HelpStat можно перейти к разбору доступных финансовых показателей бизнеса и сопоставить выводы с первичными отчётами. Само соединение в этой инструкции выполняется в Power Query; материал не предполагает, что HelpStat автоматически исправляет ваш справочник.

Источники и методика

Источники ниже помогают проверить определения и возможности отчётов. Методика разбора и учебные расчёты подготовлены редакцией HelpStat. Доступность отчётов и условия работы проверяйте в своём кабинете. Расчётные примеры в статье — учебные, а не результаты клиентов.

Как устроены материалы HelpStat

Все материалы блога
Следующий шаг — за вами

У каждого товара
есть точка роста.

Найдите свою с аналитикой HelpStat.

Команда HelpStat

Связаться с HelpStat