Из API Яндекс.Маркета -> в Excel и Power BI: интеграция

Из API Яндекс.Маркета -> в Excel и Power BI: интеграция

Если вы продаёте товары на Яндекс.Маркете, данные по заказам, остаткам и товарам можно забирать из Яндекс.Маркета в Power BI, Excel или базу данных по API. Разберём два способа - какой выбрать, зависит от объёма данных.

Небольшие данные удобно тянуть прямо в Power BI или Excel через Power Query - без установки коннекторов, просто вставив готовый код. Для полноценной загрузки больших объёмов и сложных отчётов в базу данных (ClickHouse, PostgreSQL, MySQL) есть Python-библиотека morin. Оба способа бесплатны.

Небольшие данные: Power Query в Power BI и Excel

Раньше мы раздавали коннектор отдельным файлом (.mez). Теперь проще: весь код коннектора вставляется прямо в Power Query, ставить ничего не нужно. Он работает и в Power BI, и в Excel.

Скачайте готовый коннектор Яндекс.Маркета на этой странице. Создайте пустой запрос (в Power BI: «Получить данные» -> «Пустой запрос»; в Excel: «Получить данные» -> «Из других источников» -> «Пустой запрос»), откройте «Расширенный редактор» и вставьте скачанный код.

После вставки появится форма, где нужно выбрать отчёт из списка, ввести токен, ID и (для заказов) даты:

Доступны 4 отчёта: Кампании, Остатки, Товары в каталоге и Заказы. Даты понимают форматы 2025-01-01, yesterday, today, 30daysAgo.

Начинайте с отчёта «Кампании» - он запускается от одного токена, без ID, и выдаёт сразу оба нужных идентификатора: столбец id - это ID магазина (кампании, от него идут «Остатки» и «Заказы»), а столбец businessId - ID бизнес-аккаунта, то есть всего кабинета (от него идёт «Товары в каталоге»). Нужный ID подставьте в поле «ID» при следующем запуске.

Токен Яндекс.Маркета получается по ссылке

Результат приходит строками - разверните нужные столбцы, нажав на стрелочки в шапке:

Полная загрузка в базу данных: Python-библиотека morin

Power Query хорош для небольших данных прямо в отчёте. Но для больших объёмов, автоматического ежедневного сбора и сложных отчётов (например, отчёты по ценам и заказам, которые Маркет отдаёт архивом «заказать -> дождаться -> скачать») лучше грузить данные в базу. Для этого есть бесплатная Python-библиотека morin - она забирает данные Маркета в ClickHouse, PostgreSQL или MySQL.

[TGBLOCK]

Ставится обычным pip:

pip install morin

Дальше создаём коннектор с токеном и ID кампании и запускаем сбор. База выбирается одним параметром subd:

from morin import MRKTbyDate

mrkt = MRKTbyDate(
    subd='clickhouse',            # или 'postgresql' / 'mysql'
    host='localhost', port='8123',
    username='default', password='', database='market',
    add_name='shop1',
    clientid='ID_КАМПАНИИ',        # ID магазина из отчёта «Кампании»
    token='ВАШ_ТОКЕН',
    start='2025-01-01', backfill_days=3,
    reports='orders,stocks,mappings,price_report,orders_report',
)
mrkt.collecting_manager()

morin сама создаёт таблицы, определяет столбцы и обновляет данные инкрементально (дособирает только новые дни). В отличие от Power Query, она вытягивает и «тяжёлые» отчёты - по ценам и заказам.

Все коннекторы, отчёты и ссылки собраны на странице коннекторов, а сама библиотека - на GitHub.