Kommo + Apache Superset: BI-аналитика продаж без лицензий

Kommo + Apache Superset: BI-аналитика продаж без лицензий

Apache Superset — open-source BI-платформа с возможностями enterprise-уровня: 40+ типов визуализаций, SQL Lab для произвольных запросов, ролевой доступ, встраиваемые дашборды. В отличие от Metabase Community или Google Looker Studio, Superset не имеет ограничений по количеству пользователей и позволяет настроить тонкую гранулярность доступа к данным. Подключение Kommo к Superset через промежуточную базу данных даёт полноценную BI-аналитику воронки без лицензионных расходов.

Superset vs Metabase: когда выбирать что

Оба инструмента open-source, оба подключаются к PostgreSQL. Разница — в глубине возможностей и сложности настройки.

ПараметрApache SupersetMetabase Community
Типы визуализаций40+ (включая heatmap, treemap, sunburst)~20
SQL LabДа (полноценная IDE)Упрощённый
Ролевой доступГранулярный (row-level security)Базовый
Встраивание (embed)Да (бесплатно)Платно (Pro)
Время развёртывания30–60 мин (Docker Compose)5–10 мин
Порог входаВышеНиже

Metabase — правильный выбор когда команда небольшая и нужен быстрый старт. Подробнее об этой схеме в статье о Kommo и Metabase для аналитики CRM. Superset — когда нужна enterprise-гибкость, встраивание дашбордов в продукт или строгий ролевой доступ.

Архитектура: Kommo -> PostgreSQL -> Superset

Superset не подключается напрямую к Kommo API — работает с реляционными БД. Нужен ETL-пайплайн:

Kommo API (каждые 15–60 мин)
  ↓ ETL-скрипт
PostgreSQL

Apache Superset -> дашборды, SQL Lab, алерты

Схема таблиц та же, что и для Metabase: leads, contacts, lead_status_history, tasks, users, pipelines. Ключевая таблица для time-on-stage аналитики — lead_status_history.

Развёртывание Superset через Docker Compose

# docker-compose.yml (минимальная конфигурация)
version: '3'
services:
  superset:
    image: apache/superset:latest
    ports:
      - '8088:8088'
    environment:
      - SUPERSET_SECRET_KEY=your-secret-key-here
    volumes:
      - superset_home:/app/superset_home

volumes:
  superset_home:

После запуска:

docker exec -it superset superset fab create-admin \
    --username admin --firstname Admin \
    --lastname User --email admin@example.com \
    --password yourpassword

docker exec -it superset superset init

Superset готов по localhost:8088. Подключение к PostgreSQL — через Settings -> Database Connections -> postgresql://user:pass@host:5432/db.

ETL: выгрузка данных из Kommo

Тот же инкрементальный подход, что и для Metabase:

def sync_kommo_to_postgres():
    last_sync = get_last_sync_timestamp()

    # Лиды, изменённые с последней синхронизации
    leads = kommo_api.get_leads(
        updated_from=int(last_sync.timestamp()),
        with_=["contacts", "custom_fields"]
    )

    for lead in leads:
        upsert_lead(lead)  # INSERT ... ON CONFLICT (id) DO UPDATE
        upsert_lead_contacts(lead)

    # История изменений статусов
    events = kommo_api.get_events(
        filter_type="lead_status_changed",
        created_from=int(last_sync.timestamp())
    )
    for event in events:
        insert_status_history(event)

    save_sync_timestamp(datetime.now())

Запускается по cron каждые 15–30 минут для оперативных дашбордов.

Row-Level Security: доступ к данным по ролям

Superset поддерживает Row-Level Security (RLS) — ограничение строк таблицы для конкретных пользователей или групп. Это критично когда руководители отделов должны видеть только свои сделки:

-- Правило RLS: менеджер видит только свои сделки
-- Привязка: Superset user.username = kommo.users.email
[responsible_user_email] = '{{current_username()}}'

Nastройка в Superset: Security -> Row Level Security -> Add Rule. Применяется к таблице leads — каждый менеджер видит только свои строки, руководитель (admin-роль) видит всё.

Примеры дашбордов

Воронка с конверсией по этапам (Funnel Chart):
Superset имеет нативный Funnel Chart — не нужно писать SQL для базовой воронки. Источник: таблица leads, группировка по status_id, сортировка по количеству.

Время на этапе (Box Plot или Heatmap):

SELECT
  stage_name,
  PERCENTILE_CONT(0.5) WITHIN GROUP
    (ORDER BY hours_on_stage) AS median_hours,
  PERCENTILE_CONT(0.9) WITHIN GROUP
    (ORDER BY hours_on_stage) AS p90_hours
FROM lead_status_history h
JOIN stages s ON h.to_status = s.id
WHERE h.changed_at > NOW() - INTERVAL '90 days'
GROUP BY stage_name

Когортная аналитика (лиды по месяцу создания -> конверсия):

SELECT
  DATE_TRUNC('month', created_at) AS cohort_month,
  COUNT(*) AS total,
  COUNT(*) FILTER (WHERE status_id = 142) AS won,
  ROUND(100.0 * COUNT(*) FILTER (WHERE status_id = 142) / COUNT(*), 1) AS win_rate
FROM leads
GROUP BY 1
ORDER BY 1

Встраивание дашбордов

Superset поддерживает Guest Token API для встраивания дашбордов в сторонние приложения без логина:

# Получить guest token
response = requests.post(
    f'{SUPERSET_URL}/api/v1/security/guest_token/',
    json={
        'user': {'username': 'guest'},
        'resources': [{'type': 'dashboard', 'id': DASHBOARD_UUID}],
        'rls': [{'clause': f'responsible_user_email = \'manager@company.com\''}]
    },
    headers={'Authorization': f'Bearer {admin_token}'}
)
guest_token = response.json()['token']

Дашборд встраивается в iframe с ?token={guest_token} — без необходимости создавать аккаунт Superset для каждого менеджера.

Для кого актуально

Kommo + Superset имеет смысл если:
— Нужны дашборды в продукте или портале для клиентов (embedded analytics)
— Требуется строгий row-level security: менеджеры видят только свои данные
— Команда аналитиков хочет SQL Lab без ограничений
— Масштаб: 50,000+ сделок, где Metabase начинает тормозить на сложных запросах
— Нет бюджета на Tableau ($70/пользователь/мес) или Looker ($3,000+/мес)

Часто задаваемые вопросы

Superset сложнее Metabase — стоит ли переходить?

Если текущий инструмент справляется — переходить не стоит. Superset даёт преимущества в трёх конкретных случаях: встраивание дашбордов, row-level security, расширенные типы визуализаций (heatmap, treemap). Если этих задач нет — Metabase проще и быстрее в настройке.

Как обновлять Superset без потери настроек?

Все настройки (дашборды, чарты, датасеты) хранятся в метаданных PostgreSQL Superset (отдельная БД от данных Kommo). При обновлении образа Docker данные не теряются если volumes корректно настроены. Рекомендуется экспортировать дашборды в ZIP (Dashboard -> Export) перед обновлением.

Какая БД лучше — PostgreSQL или ClickHouse?

До 5 миллионов строк — PostgreSQL с индексами справляется. При больших объёмах и GROUP BY по сотням миллионов строк — ClickHouse в 10–100 раз быстрее. Для большинства Kommo-аккаунтов (до 100,000 сделок) PostgreSQL достаточно.

Superset поддерживает алерты?

Да. Superset имеет встроенные Alerts & Reports: задать условие (например, конверсия < 10%) -> отправить email или Slack-сообщение. Требует настройки Celery и Redis в docker-compose.

Итого

  • Apache Superset — open-source альтернатива Tableau и Looker с enterprise-функциями: row-level security, встраивание, SQL Lab
  • Архитектура идентична Metabase: Kommo API -> PostgreSQL (ETL каждые 15–30 мин) -> Superset
  • Преимущество над Metabase: гранулярный доступ, embedded analytics, 40+ типов визуализаций
  • Развёртывание через Docker Compose, 30–60 минут
  • Типовой срок разработки ETL + базовые дашборды — 3–4 недели

Если вам нужна аналитика воронки Kommo с встраиванием в портал или row-level security для менеджеров — опишите задачу. Exceltic.dev оценит объём данных и настроит ETL + Superset.

Ещё статьи

Все →