Як поєднати 10 прайсів від різних постачальників в один зведений каталог?
-
Зінаїда Румянцева
Копірайтер Elbuz
Ви працюєте із 10 постачальниками. Кожен надсилає свій прайс: хтось у Excel з кириличними назвами стовпців, хтось у CSV з крапкою з комою, а хтось у PDF, який ще треба розпарити. У одного товар називається "Смартфон Samsung Galaxy S24 128GB", у іншого - "Samsung S24 128Gb Black", у третього - "Телефон Samsung Galaxy S24 (чорний) 128 ГБ". Це три різні товари чи один? Розбираємося, як перетворити хаос із десятків прайс-листів на єдиний структурований каталог.
Проблеми об'єднання множинних прайсів
Коли ви працюєте з кількома постачальниками, об'єднання даних перетворюється на серйозний виклик. Розглянемо основні проблеми, із якими стикається кожен інтернет-магазин.
1. Різні формати файлів
- Excel (.xls,.xlsx) - 40% постачальників використовують старі версії з кирилицею
- CSV з різними роздільниками - кома, крапка з комою, табуляція
- XML/JSON — сучасні API, але кожен має свою структуру
- Онлайн-таблиці — Google Sheets, які оновлюються у реальному часі
- PDF — найпроблемніший формат, що вимагає OCR та парсингу
2. Відмінності у структурі даних
Приклад: Різні назви стовпців
Постачальник А: Артикул | Назва | Ціна | Залишок
Постачальник Б: SKU | Товар | Price (EUR) | Stock | Brand | Category
Постачальник: Код | Назва | Ціна опт | Ціна різна | Склад Москва | Склад СПб
3. Ідентичні товари з різними назвами
Це найкритичніша проблема. Один і той же товар у різних постачальників може мати такий вигляд:
- Смартфон Apple iPhone 15 Pro 256GB Blue Titanium
- iPhone 15 Pro 256 Gb Синій Титан
- APPLE iPhone15Pro 256GB Blue
- Телефон iPhone 15 Pro (A2848) 256 ГБ Синій
Без правильного алгоритму зіставлення система створить 4 різні картки товару замість однієї.
4. Конфлікти у даних
Типові конфлікти:
- Ціни: Один і той же товар коштує €499 у постачальника А та €520 у Б
- Залишки: В одного "в наявності 15 шт", в іншого "під замовлення 3-5 днів"
- Характеристики: Вага вказана як "1.2 кг", "1200 г", "1200"
- Категорії: Один відносить товар до "Смартфони", інший до "Мобільні телефони"
5. Регіональні та валютні відмінності
Якщо працюєте з міжнародними постачальниками:
- Ціни у різних валютах (EUR, USD, GBP, PLN)
- Різні формати чисел: 1,234.56 (US) vs 1.234,56 (EU)
- Одиниці виміру: дюйми/см, фунти/кг, галони/літри
- Різні мови описів товарів
Етапи об'єднання прайсів: Покроковий процес
Етап 1: Інвентаризація джерел даних
Створіть реєстр усіх постачальників та їх прайсів:
- Ідентифікація: Надайте кожному постачальнику унікальний ID
- Формати: Задокументуйте формат файлу, кодування, роздільники
- Частота оновлення: Як часто постачальник оновлює прайс
- Спосіб отримання: Email, FTP, API, завантаження з сайту
- Пріоритет: Ранжуйте постачальників за важливістю (основний/резервний)
Приклад реєстру постачальників
| ID | Назва | Формат | Оновлення | Пріоритет |
| SUP001 | TechDistrib EU | CSV (UTF-8,;) | Щодня 06:00 | 1 (основний) |
| SUP002 | GlobalElectronics | XML (API) | Режим реального часу | 2 |
| SUP003 | LocalWholesale | Excel 2007 | Щопонеділка | 3 (резервний) |
Етап 2: Стандартизація структури даних
Створіть єдину схему даних (майстер-шаблон), до якої будуть наводиться всі прайси:
Обов'язкові поля:
- supplier_id - Ідентифікатор постачальника
- supplier_sku - артикул товару у постачальника
- master_sku - Ваш внутрішній артикул (заповнюється після зіставлення)
- product_name - Назва товару
- price - ціна в єдиній валюті (EUR)
- stock_status - статус наявності (in_stock / out_of_stock / preorder)
- stock_quantity - кількість на складі
Додаткові поля:
- brand - Виробник
- category - категорія товару
- ean - Штрих-код (EAN-13/UPC)
- mpn - Номер виробника
- attributes - Характеристики (JSON)
- images - Посилання на зображення
- description - Опис товару
- updated_at - Дата останнього оновлення
Етап 3: Парсинг та нормалізація
Для кожного прайсу створіть парсер, який перетворює дані на єдиний формат:
Нормалізація назв:
- Видалення зайвих прогалин та спецсимволів
- Приведення до єдиного регістру (Title Case)
- Стандартизація одиниць виміру (GB → ГБ → 128GB)
- Видалення інформаційного сміття ("!!!", "ХІТ ПРОДАЖУ", "АКЦІЯ")
Нормалізація цін:
- Конвертація в єдину валюту (використовуйте актуальні курси)
- Видалення символів валют та форматування
- Приведення до єдиного формату (float, 2 знаки після коми)
Нормалізація залишків:
- "В наявності" → in_stock (quantity > 0)
- "Під замовлення", "3-5 днів" → preorder
- "Немає", "0" → out_of_stock
Етап 4: Зіставлення товарів (Matching)
Найскладніший етап – визначити, що товари від різних постачальників ідентичні.
Рівні зіставлення (від точного до приблизного):
- За EAN/UPC: Штрих-код – 100% точність (якщо постачальники його вказують)
- За MPN: Номер виробника - 95% точність
- По артикулу постачальника: Якщо ви вже зіставляли цей SKU раніше
- За зв'язкою "бренд + модель": Apple + iPhone 15 Pro 256GB Blue
- По нечіткому порівнянню назв: Алгоритм Левенштейна із порогом 85%+
Приклад алгоритму зіставлення
Крок 1: Шукаємо точний збіг по EAN
Товар А (EAN: 1234567890123) = Товар Б (EAN: 1234567890123) → Збіг знайдено
Крок 2: Якщо EAN відсутня, перевіряємо MPN
Товар А (MPN: A2848) = Товар В (MPN: A2848) → Збіг знайдено
Крок 3: Вилучаємо бренд та ключові атрибути
"Samsung Galaxy S24 Ultra 512GB Titanium Gray"
→ Бренд: Samsung | Модель: Galaxy S24 Ultra | Пам'ять: 512GB | Колір: Titanium Gray
Крок 4: Порівнюємо за ключовими атрибутами
Якщо збігаються бренд, модель та пам'ять (80%+ полів) → Імовірний збіг (вимагає перевірки)
Уніфікація даних: Вирішення невідповідностей
Проблема 1: Різні одиниці виміру
Приклади конфліктів:
- Вага: "1.5 kg" vs "1500 g" vs "3.3 lbs"
- Розмір екрану: "6.7 inch" vs "6.7"" vs "17 см"
- Об'єм: "128GB" vs "128 ГБ" vs "128 Гб"
Рішення: Створіть довідник одиниць вимірювання та конвертери
Проблема 2: Різні валюти
Ціни приходять у USD, EUR, GBP, PLN. Необхідно:
- Отримувати актуальні курси валют (API центробанку або послуги Fixer.io)
- Конвертувати всі ціни в базову валюту вашого магазину
- Зберігати оригінальну валюту та курс для прозорості
- Оновлювати курси щонайменше 1 раз на день
Приклад конвертації цін
Постачальник А (UK): £449 → €529 (1 GBP = 1.178 EUR)
Постачальник Б (US): $499 → €465 (курс 1 USD = 0.932 EUR)
Постачальник В (EU): €510 → €510 (без конвертації)
Результат: Найкраща ціна у постачальника Б - €465
Проблема 3: Різні формати дат та часу
- US: MM/DD/YYYY (12/25/2024)
- EU: DD.MM.YYYY (25.12.2024)
- ISO: YYYY-MM-DD (2024-12-25)
- Timestamp: 1735084800
Рішення: Наведіть всі дати до формату ISO 8601 (YYYY-MM-DD HH:MM:SS)
Проблема 4: Категоризація товарів
Кожен постачальник має свою систему категорій. Створіть мапінг:
- Постачальник А: "Mobile Phones" → Ваша категорія: "Смартфони"
- Постачальник Б: "Smartphones & Tablets" → "Смартфони"
- Постачальник В: "Телефони GSM" → "Смартфони"
Вирішення конфліктів: Правила пріоритету
Коли один товар має кілька постачальників, необхідно вирішити, чиї дані використовувати.
Стратегія 1: Пріоритет за ціною
Правило: Завжди вибирати найнижчу ціну
- Плюси: Максимальна конкурентоспроможність
- Мінуси: Можливо низька маржа, можливі проблеми з якістю
- Застосування: Товари-локомотиви, масовий ритейл
Стратегія 2: Пріоритет надійності
Правило: Віддавати перевагу перевіреним постачальникам
- Критерії надійності: Історія роботи, % шлюбу, швидкість доставки
- Плюси: Менше повернень, стабільні поставки
- Мінуси: Можливо дорожче
- Застосування: Преміум-сегмент, техніка, електроніка
Стратегія 3: Пріоритет наявності
Правило: Вибирати постачальника з товаром у наявності
- In stock → вище пріоритет, ніж preorder
- Великий залишок (50+ шт) → вище пріоритет ніж малий (1-5 шт)
- Склад у вашому регіоні → вище пріоритет, ніж віддалений
Стратегія 4: Виважений пріоритет (рекомендується)
Розраховуйте підсумковий бал для кожної пропозиції:
Формула пріоритету
Score = (Price Weight × Price Score) + (Reliability Weight × Reliability Score) + (Stock Weight × Stock Score)
Приклад розрахунку товару "iPhone 15 Pro 256GB":
Постачальник А:
- Ціна: €1099 (Score: 90/100, тому що на €50 дешевше середнього)
- Надійність: 95/100 (топовий постачальник)
- Наявність: 80/100 (15 шт.)
- Разом: 0.4×90 + 0.3×95 + 0.3×80 = 88.5
Постачальник Б:
- Ціна: €1049 (Score: 100/100, найнижча)
- Надійність: 70/100 (середній постачальник)
- Наявність: 50/100 (2 шт, на замовлення 3 дні)
- Разом: 0.4×100 + 0.3×70 + 0.3×50 = 76
Вибір: Постачальник А (88.5 > 76), незважаючи на вищу ціну
Налаштування ваги пріоритетів
Ваги повинні залежати від категорії товару:
- Масові товари: Ціна 60% | Надійність 20% | Наявність 20%
- Преміум-сегмент: Ціна 25% | Надійність 50% | Наявність 25%
- Скоропсовані: Ціна 30% | Надійність 30% | Наявність 40%
Вирішення конфліктів у характеристиках
Якщо опис товару розрізняються:
- Бренд, модель, артикул: Довіряємо офіційному дистриб'ютору
- Технічні характеристики: Беремо з офіційного джерела (сайт виробника)
- Опис: Об'єднуємо найкращі частини або генеруємо власне
- Зображення: Пріоритет якісним фото (дозвіл, фон)
Автоматизація процесу об'єднання
Інструменти для автоматизації
1. ETL-системи (Extract, Transform, Load)
- Apache NiFi - візуальний конструктор пайплайнів даних (open-source)
- Talend - платформа інтеграції даних (free/paid)
- Pentaho Data Integration - ETL для бізнесу (open-source)
2. Спеціалізовані платформи для e-commerce
- Elbuz - Автоматична обробка прайсів постачальників → докладніше
- Channable - Feed management для маркетплейсів
- DataFeedWatch - Оптимізація товарних фідів
3. Власна технологія
Для складних кейсів (10+ постачальників, специфічні формати) розгляньте створення власного рішення:
- Python + pandas - обробка CSV/Excel
- Python + Beautiful Soup - парсинг HTML
- Python + pdfplumber - Вилучення даних з PDF
- PostgreSQL + процедури, що зберігаються - Логіка зіставлення
- Redis/RabbitMQ черги для обробки великих обсягів
Архітектура автоматизованої системи
- Складальник даних (Collector): Отримання прайсів з різних джерел
- Парсер: Вилучення даних із файлів різних форматів
- Нормалізатор: Приведення до єдиної схеми
- Matching Engine: Зіставлення товарів
- Conflict Resolver: Вирішення конфліктів за правилами
- Master Data Storage: Зберігання зведеного каталогу
- Export Engine: Вивантаження у ваш магазин/CMS
Частота оновлення
Виберіть оптимальний режим синхронізації:
- Real-time (API): Для товарів з швидко мінливими залишками
- Кожні 1-4 години: Для популярних категорій (електроніка)
- Щодня (вночі): Для стандартного асортименту
- Щотижня: Для товарів з низькою оборотністю
Важливо врахувати під час автоматизації
- Логування: Зберігайте історію всіх змін для аудиту
- Валідація: Перевіряйте дані на коректність перед імпортом
- Повідомлення: Алерти при критичних помилках чи аномаліях
- Відкат: Можливість повернутися до попередньої версії даних
- Моніторинг: Дашборди з метриками імпорту та помилками
Реальний кейс: Інтернет-магазин електроніки
Вихідні дані
Компанія: Інтернет-магазин побутової техніки та електроніки (Польща)
Проблема: 12 постачальників, 45,000 товарів, ручне оновлення прайсів 3 рази на тиждень (16 годин роботи менеджера)
Джерела даних
- 4 постачальника — CSV (різні кодування та роздільники)
- 3 постачальника - Excel (різні версії)
- 2 постачальники - XML через FTP
- 2 постачальники - API (JSON)
- 1 постачальник - Google Sheets (оновлення раз на годину)
Рішення
Етап 1: Створили єдину схему даних із 25 обов'язковими полями
Етап 2: Написали 12 парсерів для кожного постачальника (Python+pandas)
Етап 3: Впровадили алгоритм зіставлення:
- За EAN - 78% товарів (35,100 шт)
- За MPN - 12% товарів (5,400 шт)
- По нечіткому порівнянню назв – 8% товарів (3,600 шт)
- Ручна перевірка - 2% товарів (900 шт)
Етап 4: Налаштували правила пріоритету:
- Товари-локомотиви (100 SKU) - мінімальна ціна
- Преміум-бренди - надійний постачальник, навіть якщо дорожче на 3-5%
- Інші — зважений пріоритет (ціна 40%, надійність 30%, наявність 30%)
Результати через 6 місяців
- Економія часу: З 16 до 2 години на тиждень (-87%)
- Актуальність даних: Оновлення 2 рази на день замість 3 разів на тиждень
- Зростання виручки: +€180,000 за рахунок точніших залишків (+12%)
- Зниження повернень: -€24,000 за рахунок коректних описів (-18%)
- Оптимізація закупівель: Економія €45,000 на виборі найкращих цін постачальників
- ROI проекту: 620% (окупився за 2 місяці)
Ключові інсайти
- Правило 80/20: 78% товарів порівняються автоматично за EAN
- Критична валідація даних: 5% прайсів приходять з помилками
- Важливий моніторинг аномалій: система повинна алертити про різкі стрибки цін
- Не можна повністю виключити людину: 2% товарів потребують ручної перевірки
Міжнародна адаптація: Мультирегіональність
Робота з міжнародними форматами даних
Працюючи з постачальниками з різних країн:
Формати чисел:
- US/UK: 1,234.56 (кома - роздільник тисяч, точка - десяткова)
- EU: 1.234,56 (точка - роздільник тисяч, кома - десяткова)
- Рішення: Визначайте формат автоматично або задавайте для кожного постачальника
Кодування тексту:
- UTF-8 (універсальна, рекомендується)
- Windows-1251 (кирилиця, застаріла)
- ISO-8859-1 (Western Europe)
- Рішення: Автовизначення кодування (бібліотека chardet для Python)
Мультивалютність: Управління цінами
Стратегія 1: Єдина базова валюта
Конвертуйте всі ціни в одну валюту (наприклад, EUR):
- Використовуйте API з актуальними курсами (ECB, Fixer.io, CurrencyLayer)
- Обновляйте курси щонайменше 1 раз на день
- Для B2B можна фіксувати курс на період (тиждень/місяць)
- Зберігайте оригінальну валюту та курс конвертації для аудиту
Стратегія 2: Мультивалютний каталог
Тримайте ціни в оригінальних валютах, конвертуйте при показі клієнту:
- Дозволяє уникнути накопичення помилок округлення
- Актуальні ціни у реальному часі
- Складніше порівнювати пропозиції різних постачальників
Приклад мультивалютного сценарію
Товар: Sony PlayStation 5
Постачальник А (UK): £479.99
Постачальник Б (US): $549.99
Постачальник В (EU): €549.99
Конвертація в EUR (курси на 15.01.2025):
- Постачальник А: £479.99 × 1.178 = €565.43
- Постачальник Б: $549.99 × 0.932 = €512.59
- Постачальник: €549.99
Вибір: Постачальник Б (US) — €512.59 (найкраща ціна після конвертації)
Податки та митні збори
Якщо працюєте із зовнішніми постачальниками:
- VAT: Враховуйте, чи включено ПДВ у ціну постачальника
- Мита: Додайте до вартості товарів з-за меж ЄС
- Доставка: Міжнародні поставки дорожчі за локальні
Висновок
Об'єднання прайсів від безлічі постачальників - це складне, але вирішуване завдання. Ключові висновки:
- Стандартизація - основа: Створіть єдину схему даних, до якої наводяться всі джерела
- Автоматизація критична: Ручна обробка 10+ прайсів забирає 15-20 годин на тиждень
- Зіставлення товарів - найскладніший етап: Використовуйте EAN/MPN, де можливо, для інших — алгоритми нечіткого пошуку.
- Правила пріоритету мають бути гнучкими: Різні стратегії для різних категорій товарів
- Моніторинг та валідація обов'язкові: 5-10% даних можуть приходити з помилками
- ROI високий: Системи окупаються за 2-4 місяці за рахунок економії часу та оптимізації закупівель
Почніть з інвентаризації ваших джерел даних, визначте пріоритетних постачальників та створіть єдину схему. Автоматизуйте процес поступово - спочатку парсинг, потім зіставлення, потім вирішення конфліктів.
Чи готові автоматизувати роботу з прайсами?
Дізнайтесь більше про стратегії управління даними в нашому повному посібнику з імпорту та синхронізації даних.
Автоматизуйте обробку прайсів від усіх ваших постачальників за допомогою платформи Elbuz.
Збережи посилання на цю сторінку
Зінаїда Румянцева
Копірайтер ElbuzУ світі автоматизації я ткач історії вашого процвітання. Тут кожна пропозиція – крапля каталізатора успіху, і я готова вас провести шляхом ефективного інтернет-бізнесу!
Обговорення теми – Як поєднати 10 прайсів від різних постачальників в один зведений каталог?
Як поєднати 10 прайсів від різних постачальників в один зведений каталог?
Немає коментарів.


Написати коментар
Ваша адреса електронної пошти не буде опублікована. Обов'язкові поля відмічені *