Розробка BI-дашборду (Business Intelligence)
Дані розкидані по CRM, ERP, маркетплейсах, а звіти готують вручну в Excel — це гальмує прийняття рішень через затримки, помилки та неефективне використання ресурсів. BI-дашборд об'єднує всі джерела в єдине сховище (Data Warehouse) і дає змогу будувати інтерактивні звіти в реальному часі без допомоги розробника. Наш досвід — понад 20 реалізованих проєктів, 7 років на ринку. Сертифіковані спеціалісти з ClickHouse та PostgreSQL.
Проблеми, які вирішуємо
-
N+1 запити — при прямому підключенні до CRM кожен звіт може генерувати сотні запитів, що призводить до тайм-аутів. Data Warehouse усуває цю проблему завдяки розмірній моделі.
-
Неузгодженість даних — різні джерела мають різні формати та часові зрізи. ETL-пайплайн нормалізує та очищує дані перед завантаженням.
-
Повільні агрегації — транзакційні бази не оптимізовані для аналітики. ClickHouse виконує запити з групованням по мільярдах рядків за секунди.
Чому Data Warehouse — основа будь-якого BI-рішення?
Data Warehouse — централізоване сховище, оптимізоване для аналітичних запитів, а не для транзакцій. На відміну від простого підключення до джерел, DWH дозволяє уникнути N+1 запитів та забезпечити консистентність даних. Стандартний підхід — розмірна модель (star schema):
dim_customers
|
dim_products — fact_orders — dim_dates
|
dim_locations
fact_orders — факти (транзакції), містить числові метрики (сума, кількість) та ключі до вимірів. dim_* — виміри (описові дані). Запити виду «продажі по регіонах за Q3» працюють швидко завдяки цій структурі. Правильна модель даних дозволяє заощадити до 40% часу аналітиків.
Як ClickHouse прискорює аналітичні запити?
ClickHouse — колонкова СУБД з величезною швидкістю агрегації. На практиці: запит COUNT(*) + SUM(revenue) по таблиці з 1 мільярдом рядків виконується за 0.5 секунди, тоді як на PostgreSQL — 15 хвилин. ClickHouse швидший за PostgreSQL у 10–100 разів для типових BI-запитів.
-- ClickHouse: продажи по категориям за последние 30 дней
SELECT
category,
sum(revenue) AS total_revenue,
uniqExact(customer_id) AS unique_customers,
count() AS orders
FROM orders_mv
WHERE toDate(created_at) >= today() - 30
GROUP BY category
ORDER BY total_revenue DESC;
ETL з PostgreSQL в ClickHouse: через clickhouse-local + scheduled job або Apache Airflow. Також можна використовувати матеріалізовані представлення для попередньо обчислених агрегатів.
Як ми будуємо ETL-пайплайн для BI?
-
Аудит джерел даних — виявляємо всі релевантні системи (CRM, ERP, маркетплейси), оцінюємо обсяги та частоту оновлення.
-
Проектування DWH — розробляємо star-schema з урахуванням майбутніх звітів.
-
Розробка ETL — використовуємо Apache Airflow для оркестрації, dbt для трансформацій. Приклад DAG:
source_extract → load_to_staging → transform_to_dwh → load_to_clickhouse.
-
Оптимізація ClickHouse — налаштування партиціонування, primary key, матеріалізованих представлень.
-
Створення дашбордів — 10–20 типових звітів з фільтрами, drill-down, параметризованими запитами.
Кейс: Для клієнта з e-commerce ми побудували DWH на ClickHouse, що дозволило скоротити час виконання звіту з 8 секунд до 1.2 секунди, прискоривши роботу аналітиків у 6 разів.
Що таке self-service BI і як його вбудувати?
Self-service означає, що аналітик або менеджер може сам побудувати потрібний звіт. Компоненти:
-
Конструктор запитів (query builder UI) — drag & drop полів, вибір агрегацій, фільтри без SQL.
-
Конструктор дашборду — додати віджет, вибрати тип графіка, налаштувати осі.
-
Параметризовані звіти — шаблон зі змінними, користувач вводить значення.
Порівняння інструментів для вбудовування BI:
| Інструмент |
Тип |
Self-service |
Вбудовування |
Open source |
| Metabase |
Embedded |
Так |
iframe/API |
Так |
| Apache Superset |
Full BI |
Так |
API |
Так |
| Lightdash |
BI + dbt |
Так |
API |
Так |
| Custom |
Повністю кастомний |
За бажанням |
Повне |
Свій код |
Ми допомагаємо вибрати оптимальний варіант під вашу задачу.
OLAP та slice & dice
OLAP дозволяє «нарізати» дані за кількома вимірами:
-
Drill-down: рік → квартал → місяць → день
-
Slice: тільки один регіон зі всіх
-
Dice: регіон × категорія × період
-
Pivot: рядки та колонки міняються місцями
У BI-дашборді це реалізується через ієрархічні фільтри та pivot-таблиці.
Когортний аналіз
Когортний аналіз — групування користувачів за періодом першої дії та відстеження метрик у часі:
| Когорта |
M0 |
M1 |
M2 |
M3 |
| Когорта 1 |
100% |
42% |
31% |
28% |
| Когорта 2 |
100% |
39% |
28% |
— |
SQL для когортного retention:
WITH cohorts AS (
SELECT user_id, DATE_TRUNC('month', created_at) AS cohort_month
FROM users
),
activity AS (
SELECT user_id, DATE_TRUNC('month', event_at) AS activity_month
FROM user_events WHERE event_type = 'purchase'
)
SELECT
cohort_month,
EXTRACT(MONTH FROM AGE(activity_month, cohort_month)) AS period,
COUNT(DISTINCT a.user_id)::FLOAT / COUNT(DISTINCT c.user_id) AS retention_rate
FROM cohorts c
LEFT JOIN activity a USING (user_id)
GROUP BY 1, 2;
Доступ та безпека
-
Row-level security: кожен менеджер бачить тільки своїх клієнтів/регіон.
-
Політики на рівні датасету: хто може створювати звіти, хто тільки переглядати.
-
Аудит запитів: хто і коли дивився які звіти.
Що входить у розробку BI-дашборду
- Аудит джерел даних та моделювання.
- Розробка ETL-пайплайну (ClickHouse, Airflow).
- Створення дашбордів (10–20 звітів).
- Документація архітектури.
- Налаштування прав доступу та безпеки.
- Навчання команди аналітиків.
- Технічна підтримка після запуску.
Терміни
MVP BI-дашборду (ClickHouse/PostgreSQL, 10–15 звітів, базові фільтри, користувацькі ролі): 3–4 місяці. Повноцінна BI-платформа з self-service конструктором, когортами, ETL та embedded SDK: 5–9 місяців. Замовте розробку BI-дашборду та отримайте консультацію інженера. Зв'яжіться з нами, щоб обговорити деталі вашого проекту.
Як налаштувати веб-аналітику: GA4, GTM, Яндекс.Метрика та Amplitude
Ми часто бачимо: конверсія 1.2 %, трафік зростає, а конверсія стоїть. Маркетолог дивиться в Google Analytics і каже: «користувачі йдуть з кроку 2 оформлення замовлення». Розробник відкриває той самий крок — помилок немає, в Sentry тиша. Значить, справа не в JS-базі, а в UX або в кривих даних, які показує аналітика. Аналітика ламається непомітно: подія перестала трекатися після редеплою — ніхто не помітив; GTM-тег стріляє двічі — дані задвоїлися; фільтр GA4 виключає бота, який насправді — реальний трафік з корпоративного проксі. Замовте аудит поточних тегів — ми знайдемо причину за тиждень. Ми маємо понад 5 років досвіду в налаштуванні веб-аналітики для 100+ проєктів — гарантуємо прозорість та достовірність даних.
Після правильного налаштування економія рекламного бюджету може досягати значної суми щомісяця — це реальний кейс інтернет-магазину з 50 000 сесій на день, де дедуплікація purchase повернула 20 % невірно приписаних конверсій.
Чому події GA4 дублюються і як це виправити?
Universal Analytics закрито, його місце зайняла подієва модель GA4. У ній немає фіксованих хітів сторінок і транзакцій — лише події з параметрами. Це гнучкіше, але вимагає правильного дизайну подій.
Автоматичні події GA4 збирає сам: page_view, scroll, click, session_start. Рекомендовані події потрібно реалізувати самостійно: purchase, add_to_cart, begin_checkout, view_item. Google очікує конкретну схему параметрів — якщо передати product_id замість item_id, дані потрапляють в GA4, але не в стандартні звіти e-commerce. Кастомні події для специфіки проєкту: filter_applied, video_progress, form_step_completed. Кастомні параметри необхідно зареєструвати в GA4 Admin → Custom definitions, інакше вони не будуть доступні у звітах.
Часта помилка — подія purchase з дублями. Причина: тег спрацьовує на сторінці /thank-you, користувач оновлює сторінку — другий purchase іде в GA4. Рішення: на бекенді генеруємо унікальний transaction_id і передаємо в подію. GA4 de-duplicates по ньому — перевіряйте через DebugView. Правильна атрибуція економить до 20 % рекламного бюджету, який раніше йшов на невірно приписані конверсії.
Як налаштувати data layer, щоб не втратити дані?
GTM — інструмент для керування тегами без деплою коду. Але «без коду» не означає «без архітектури». Data Layer — основа всього. Передаємо дані з застосунку в GTM через dataLayer.push(). Структура: event + контекстні дані. Для e-commerce: перед відкриттям сторінки продукту — push з даними товару. GTM-тег читає з dataLayer, не з DOM.
window.dataLayer = window.dataLayer || [];
dataLayer.push({
event: 'view_item',
ecommerce: {
items: [{
item_id: 'SKU-12345',
item_name: 'Назва товару',
price: null,
currency: null
}]
}
});
Погана практика: GTM-тег парсить DOM — шукає ціну в span.price, назву в h1. Це ламається при будь-якій зміні верстки. Хороша практика: завжди dataLayer. Використовуємо Preview Mode для налагодження та GTM Server-Side для чутливих даних — відправка з сервера, не з браузера, обходить блокувальники реклами, не втрачає дані. Server-side підхід у 2-3 рази надійніший за client-side за показником втрати подій через розширення браузера.
Як Яндекс.Метрика доповнює веб-аналітику?
Для російської аудиторії Метрика обов'язкова — особливо Вебвізор. Запис сесії користувача, який кинув кошик, часто дає відповідь швидше, ніж тиждень аналізу воронки. Цілі в Метриці: подієві (через ym(COUNTER_ID, 'reachGoal', 'GOAL_NAME')) або автоматичні (клік по кнопці, відвідування сторінки). Зв'язка з CRM через Метрика Плюс — передача офлайн-конверсій. Наш досвід: у 8 з 10 проєктів після налаштування Метрики знаходили приховані баги в UX, які не показували інші системи.
Що дає product analytics в Amplitude?
Amplitude — продуктовий інструмент, на відміну від маркетингових GA4 та Метрики. Він заточений під аналіз поведінки користувачів всередині продукту: воронки, ретеншн, user paths. Amplitude підходить для SaaS-продуктів, мобільних застосунків та будь-яких сервісів із зареєстрованими користувачами, де важливо зрозуміти, як проходять онбординг, на якому кроці йдуть, які фічі використовують частіше. Ключові концепції: identify (пов'язати анонімного користувача з userId після авторизації), group (акаунт у B2B SaaS), когорти для утримання. Amplitude Chart — воронка кроків за останні 30 днів з розбивкою за джерелом.
Моніторинг якості даних
Аналітика без моніторингу — чорна скринька. Налаштовуємо:
- GA4 Realtime — перевіряємо після кожного деплою, що ключові події приходять
- Alerting в GA4 — аномалія в кількості подій
purchase (різке падіння = щось зламалося)
- GTM Preview в staging-оточенні перед продакшеном
- Ручні тести воронок раз на тиждень — просто пройти шлях покупця і перевірити, що все трекається
Якщо ви помітили розбіжності в даних — зв'яжіться, проведемо безкоштовний аудит коректності тегів.
Що перевіряємо після кожного деплою
- Чи всі рекомендовані події присутні в DebugView
- Чи немає задвоєнь (рахуємо кількість
purchase на 100 сесій)
- Чи не змінилася структура dataLayer після оновлення фронтенду
Що входить в роботу
| Компонент |
Опис |
| Аудит поточних тегів |
Перевірка існуючих GTM-тегів, dataLayer, дублів та помилок |
| Дизайн подієвої схеми |
Документація: список подій, параметри, тригери |
| Налаштування GA4 + GTM |
Створення конфігурації, тегів, Custom definitions |
| Яндекс.Метрика |
Встановлення лічильника, створення цілей, налаштування Вебвізора |
| Amplitude (опціонально) |
Налаштування клієнтського та серверного SDK, когорти |
| QA та моніторинг |
Тестування в Preview Mode, Alerting |
| Навчання та передача |
Доступи, інструкція з додавання нових подій, консоль |
Процес та терміни
- Аудит поточних тегів та даних (2 дні)
- Дизайн подієвої схеми (2 дні)
- Розробка Data Layer та налаштування тегів (3–5 днів)
- QA в Preview Mode та на staging (2 дні)
- Деплой та налаштування дашбордів (1 день)
| Сценарій |
Термін |
| Базове налаштування GA4 + GTM |
1 тиждень |
| Повний e-commerce tracking + Метрика |
2–3 тижні |
| Server-side GTM + Amplitude |
3–5 тижнів |
Вартість розраховується індивідуально. Отримайте консультацію з налаштування веб-аналітики для вашого проєкту — ми оцінимо обсяг робіт за один день. Зв'яжіться з нами, щоб почати. Для точного розрахунку вартості залиште заявку — ми проаналізуємо ваш стек за 1 день.