Розробка панелі Business Intelligence (BI)
BI-панель — це не просто набір графіків, а інструмент прийняття рішень на основі даних. На відміну від звичайної панелі аналітики: користувачі можуть самостійно створювати звіти без допомоги розробника (self-service BI), працювати з багатовимірними даними, OLAP-аналіз, когортний аналіз та предиктивні метрики.
Архітектура даних для BI
BI працює з даними, оптимізованими для аналітичних запитів, а не транзакцій. Стандартний підхід — Data Warehouse з розмірною моделлю:
Star schema:
dim_customers
|
dim_products — fact_orders — dim_dates
|
dim_locations
fact_orders — факти (транзакції), містять числові метрики (сума, кількість) та ключі до вимірів. dim_* — виміри (описові дані). Запити на кшталт «продажи по регіонам за Q3» виконуються швидко завдяки цій структурі.
ClickHouse як аналітичне сховище
ClickHouse — стовпчастовий СУБД з величезною швидкістю агрегації. На практиці: запит COUNT(*) + SUM(revenue) по таблиці з 1 мільярдом рядків — секунди, а не хвилини.
-- 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 + запланований job або Apache Airflow.
Self-service BI
Self-service означає, що аналітик або менеджер можуть самостійно побудувати потрібний звіт. Компоненти:
- Конструктор запитів (query builder UI) — перетягування полів, вибір агрегацій та фільтрів без SQL
- Конструктор панелі — додавання віджета, вибір типу графіка, налаштування осей
- Параметризовані звіти — шаблон зі змінними, користувач вводить значення
Готові інструменти для вбудовування BI у власний додаток:
- Metabase Embedded — iframe або API, можливості white-label
- Apache Superset — open-source, повнофункціональна BI
- Lightdash — BI поверх dbt models
- Custom — TanStack Table + ECharts + headless query engine
OLAP та slice & dice
OLAP дозволяє «нарізати» дані за декількома вимірами:
- Drill-down: рік → квартал → місяць → день
- Slice: лише один регіон з усіх
- Dice: регіон × категорія × період
- Pivot: рядки та колонки міняються місцями
У BI-панелі це реалізується через ієрархічні фільтри та зведені таблиці.
Когортний аналіз
Когортний аналіз групує користувачів за періодом їх першої дії та відслідковує метрики протягом часу:
| Когорта | M0 | M1 | M2 | M3 |
|---|---|---|---|---|
| Січ 2024 | 100% | 42% | 31% | 28% |
| Лют 2024 | 100% | 39% | 28% | — |
SQL для когортного утримання:
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;
Доступ та безпека
- Безпека на рівні рядків: кожен менеджер бачить лише своїх клієнтів/регіон
- Політики на рівні набору даних: хто може створювати звіти, хто лише переглядати
- Аудит запитів: хто та коли переглядав які звіти
Графік
MVP BI-панель (ClickHouse/PostgreSQL, 10–15 звітів, базові фільтри, ролі користувачів): 3–4 місяці. Повнофункціональна BI-платформа з self-service конструктором, когортами, ETL та вбудованим SDK: 5–9 місяців.







