Zpět na domů

BI-systém na DataLens a PostgreSQL pro WB Ozon

Článek popisuje vytvoření BI-systému pro analýzu Wildberries a Ozon na bázi PostgreSQL a DataLens. Klíčové funkce: modulové jádro skriptů, optimalizace JOIN prostřednictvím předvýpočtu, verzionování sebestupy. Systém se škáluje pro mnoho klientů s automatizovaným onboardingem.

Vytváříme BI pro Wildberries a Ozon na PostgreSQL + DataLens
Advertisement 728x90

Vytvoření BI systému na PostgreSQL a DataLens pro analýzu tržišť

Vývojářský tým vytvořil BI systém pro analýzu dat z osobních účtů na Wildberries a Ozon. Systém využívá PostgreSQL jako hlavní úložiště, Yandex DataLens pro vizualizaci a Python skripty pro stahování z API. To umožnilo automatizovat denní aktualizace, optimalizovat dotazy a zavést verzování nákladů.

Projekt se vyvinul z ručního nahrávání do Google Tabulí do škálovatelné služby s orchestrací klientů přes webhooky.

Problémy s existujícími službami a start projektu

Standardní analytické služby neposkytovaly jednotný obraz dat z více zdrojů. Tým, který má zkušenosti s API WB a Ozon, se rozhodl postavit vlastní řešení na DataLens.

Google AdInline article slot

První dashboardy byly vytvořeny z dat z Google Tabulí. Nestabilita připojení však donutila přejít na vlastní server s databází. Zpočátku se používal MySQL, ale rychle se migrovalo na PostgreSQL 16 pro lepší výkon s velkými objemy.

Automatizace stahování byla realizována přes Cron úlohy. Skripty parsují JSON/REST API, normalizují data a ukládají je do databáze.

Architektura jádra a škálování

Klíčový prvek – modulární jádro skriptů. Spouští se s konfigurací klienta, což umožňuje centrálně aktualizovat logiku pro všechny uživatele. Změny v API protokolu se automaticky aplikují na všechny.

Google AdInline article slot

Proměnné ve skriptech (časování, limity) se přizpůsobují objemu dat klienta, čímž se předchází chybám 429.

Škálování:

  • Demo verze na anonymizovaných datech pro testy.
  • Přihlašovací formulář na webu s webhookem k orchestrátoru.
  • Automatické vytvoření dashboardu a rozeslání přístupů.
  • Stahování historických dat: WB – až 1 rok, Ozon – až 2 roky.

Propojení s Google Tabuli zůstalo pro zadávání nákladů a plánu prodeje – skripty je stahují automaticky.

Google AdInline article slot

Optimalizace výkonu

Původní datasety v DataLens spoléhaly na mnohonásobné JOIN, což zpomalovalo dashboardy na 15–20 sekund. Optimalizace:

  • Předvýpočet dat na serveru: ekonomika, struktura nákladů, zisk se ukládají do databáze.
  • Obohacení tabulek ve fázi stahování: přidání kategorií podle článku (vendor_code) bez JOIN v DataLens.
  • Minimalizace JOIN na 2–3 na dashboard.

Výsledek: doba načítání se zkrátila na 5 sekund. Denní skripty předvýpočtu trvají 30 sekund.

Průchozí filtry na dashboardech zajišťují pohodlnou navigaci podle období, kategorií a článků.

Současný technologický stack

┌──────────────────────────────┐
│ API WB / OZON                │
│ (JSON/REST)                  │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐        ┌──────────────────────────────┐
│ Python skripty               │ <----> │ Google tabule                │
│ (parsování, normalizace)     │        │ (náklady, plán)              │
└──────────────┬───────────────┘        └──────────────────────────────┘
               │
               ▼
┌──────────────────────────────┐
│ PostgreSQL 16                │
│ (hlavní úložiště)            │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│ Yandex DataLens              │
│ (vizualizace)                │
└──────────────────────────────┘

Backend: Python, psycopg2, requests, subprocess, python-dotenv, Flask

Databáze: PostgreSQL 16, SQL

Automatizace: Cron, orchestrátor

BI: DataLens

AI modely (Claude Sonnet/Opus) byly použity pro urychlení vývoje skriptů a ladění.

Verzování nákladů

Náklady se v čase mění, což vyžaduje úpravu historických dat bez zkreslení analýzy. Řešení: sloupec start_date v tabulce.

Logika:

  • Základní hodnota bez data.
  • Nové záznamy s start_date pro verze.
  • Výpočet podle priority: aktuální náklady na datum prodeje podle klíče start_date + vendor_code.

Příklad vložení:

INSERT INTO wb_cost_price VALUES
('ART-001', 800.00, '2025-01-01'),
('ART-001', 900.00, '2025-06-01'), -- zvýšeno
('ART-001', 850.00, '2026-02-01'); -- sníženo

To zajišťuje přesný přepočet zisku zpětně.

Co je důležité

  • Modulární jádro umožňuje aktualizovat logiku stahování pro všechny klienty centrálně.
  • Předvýpočet na serveru zkracuje dobu načítání dashboardů 3–4krát.
  • Verzování nákladů zachovává historickou přesnost bez přepisování dat.
  • Automatizace onboarding přes webhooky minimalizuje ruční práci.
  • PostgreSQL 16 je optimální pro analýzu s obohacením tabulek.

— Editorial Team

Advertisement 728x90

Číst dál