Привет, Хабр!
В течение последнего года я занимался разработкой аналитической панели для продавцов на маркетплейсах Wildberries и Ozon, а в перспективе планируется интеграция с Яндекс.Маркет. Я хотел бы поделиться своим опытом и представить систему WBOZYA-dash, которая предназначена для анализа продаж через эти маркетплейсы. До конца весны 2026 выпущу, думаю, с десяток статей на эту тему, а пока сделаю общий обзор своей системы.

Аналитическая система WBOZYA-dash состоит из трёх ключевых компонентов: ETL-скриптов на Python, базы данных PostgreSQL и дашборда DataLens. Базовая версия дашборда включает около полутора сотен чартов и три десятка тематических вкладок. Перечислять их нет смысла - в конце статьи будет ссылка на работающую демо версию.
Развертывание системы подразумевает дальнейшую кастомизацию в соответствии с техническими заданиями заказчика. Можно как просто изменить формулу расчета какой-то метрики, так и создать эксклюзивный дашборд со своими данным и своей логикой. Среди реализованных нестандартных дашбордов например есть дашборд с расчётом окупаемости лицензий по продажам через маркетплейсы, а также оптовое и розничное подразделения компании.
Архитектура системы

Данные из Wildberries и Ozon, а также при необходимости из Google Sheets, извлекаются ETL-скриптами при опросе методов API МП, после чего экспортируются в базу данных PostgreSQL. Далее, с использованием SQL-запросов, данные преобразуются в датасеты для создания дашбордов в DataLens.
ETL-скрипты
ETL-скрипты разработаны на языке Python и представляют собой набор процедур, запускаемых по расписанию или через командную строку. Каждая процедура соответствует запросу к определенному методу API. В некоторых случаях запросы выполняются в несколько этапов, например, когда требуется предварительный запрос для получения необходимых данных. Логика работы ETL-скриптов включает определение самых свежих данных в базе и последующие запросы к API с этой даты до текущего момента. Система также обрабатывает ошибки HTTP 50x и 429, что обеспечивает непрерывную загрузку данных даже при временной недоступности API. ETL-скрипты могут быть запущены на серверах Яндекс.Облака или VPS.
База данных
База данных функционирует на сервере PostgreSQL, размещённом в Яндекс.Облаке или на VPS, что обеспечивает полный контроль над коммерческой информацией. Наличие собственной базы данных позволяет настраивать витрины данных на основе «сырых» данных из API, создавать резервные копии и получать мгновенный доступ к историческим данным. В базе данных предусмотрено около 50 таблиц, включая основные таблицы для прямого экспорта данных из API и вспомогательные таблицы, такие как логгирование, координаты складов и таблица соответствия артикулов между OZ и WB.
Дашборды DataLens
Datalens не взаимодействует напрямую с API, а работает исключительно с данными из базы данных. Для создания дашбордов преимущественно используются SQL-запросы, поскольку требуемые метрики часто требуют построения промежуточных таблиц. Вычисляемые поля DataLens не поддерживают многоэтапные агрегации, поэтому для этого применяются SQL-запросы. В DataLens используются различные типы чартов, такие как «Таблица», «График», «Линейная диаграмма», «Кольцевая диаграмма», «Сводная таблица», «Иерархическая таблица» и «Карты». Дашборды могут быть размещены в сервисе DataLens в Яндекс.Облаке или в OpenSourсe версии DataLens на VPS.
Боевой опыт
На данный момент система WBOZYA-dash внедрена у ограниченного числа клиентов, однако среди них есть клиент с объёмом продаж около 500 тысяч единиц продукции на сумму 450 миллионов рублей в месяц. Такие объёмы данных требуют особого подхода, и система успешно справляется с обработкой этой информации.
Для ознакомления с демонстрационной версией системы, работающей на реальных данных, вы можете перейти по ссылке: https://datalens.yandex/654jelz3xzpoq.
Комментарии (12)

KambodjaBit
02.04.2026 07:31Обратно по апи цену меняет?

delffine Автор
02.04.2026 07:31нет. по апи только на чтение, функций управления не предусмотрено. да и пользователи смотрят в даталенс, который отправлять куда либо из себя ничего не умеет.

KambodjaBit
02.04.2026 07:31Озон с частотой запросов не блочит?

delffine Автор
02.04.2026 07:31нет. но специфика такая. что много запросов и не надо - выгрузка раз в сутки.
Robastik
Главный вопрос, который надо раскрывать в таких питчах - расчет цены на сегодня с заданной маржой сделан?
Если сделан, то как рассчитан %выкупа на текущую дату?
reinmaan
О, судя по всему коллега из одежды? Корректно процент выкупа конкретно на вб можно рассчитать только "на вчера" из отчетов по детализации. А по поводу ценв, вы до сих пор пляшете от цены до спп?
Robastik
Это почему? В товарке тоже не хило плавает %выкупа.
Скрытый текст
На вчера они и рассчитанный дают, зачем его считать? Или вы буквально считаете на вчера как продажи / заказы?
Вчерашние заказы будут выкупаться/отменяться/возвращаться в течение 15 - 45 дней.
delffine Автор
расчета цены - нет.
на счет %выкупов. фирмы, с которым я работал - там он стабильный. половина выкупается в первые 4 дня, к 10 дню уже всегда почти выходим на уровень среднего %выкупа.
Скрытый текст
в качестве эксперимента делал прогноз выкупов, переворачивая кривую "ctr продаж на сегодня" в будущее и применяя к заказам за последние 10 дней. получается не особо интересно - выкупы есть в первые два дня, а потом резкий спад. Уже на третий день в 2 раза относительно "завтра". как мне кажется это наглядно показывает, что большинство товаров, которые будут выкупать позже чем через 5 дней, еще даже не заказаны.
Robastik
Есть мнение, что центральный бизнес-процесс на маркетплейсах - это определение цены на текущий день с заданной маржой. И эту задачу должна решать аналитика.
А то что случилось (день или неделю назад) - это отчетность. Использовать отчетность для управления - ничем не отличается от езды на машине по зеркалам заднего вида.
И если процесс по сути - лотерея, то какой смысл разглядывать результат на красивых графиках?
Если считать, что CTR выкупов на вашем графике это %выкупов (необычное применение для click-through rate), то такой ровный - это исключение из обычной практики. Самый ровный из 40 просмотренных нашел у себя такой
Скрытый текст
Детский лонгслив выкупают неглядя на 23 февраля и чуть хуже - на 8 мартв.
Как тут определить средний, чтобы не ждать полгода? И где гарантии, что доставка не станет быстрее или медленнее и % выкупа не скакнет +-10%? Скорость доставки - далеко не единственная неподконтрольная селлеру причина изменения %выкупа.
Обычно типа такого все
Скрытый текст
Какой тут средний?) И какой в нем смысл.
delffine Автор
хотел бы я подискутировать, но, увы, понимаю, что не влядею вопросом, так как еще не сталкивался с таким.
а какой общий подход у вас к решению задачи "цена на сегодня" ? кажется, процент выкупа не единственная трудность. даже зная выкупы на завтра-послезавтра, надо как то посчитать будущие затраты на логистику (особенно с возвратов), штрафы, хранение, рекламу и прочие расходы, которые могут и не зависеть от выкупов ? берется среднее по историческим данным ?