Stitch Data → PostgreSQL → Metabase

Stitch Data → PostgreSQL → Metabase

«Одна кнопка» для Bitrix24-данных и-не-только (обновлено 19 июня 2025 г.)


1. Почему именно эта связка

От «REST-парсинга» к репликации за вечер. Bitrix24 щедро выдаёт API-методы, но лимиты 2 запр./сек и пятиминутные «бан-квоты» превращают выгрузку CRM-истории в практику «запустил скрипт — ушёл за кофе» (apidocs.bitrix24.com). Stitch Data платит за строки, а не за вызовы, и вытягивает их пакетами через собственный Import API или Singer-taps, избавляя команду от самописного ETL.

Снижаем порог для SMB. — Stitch Standard даёт до 5 млн строк/мес. на \$100 и оплату картой, а расти можно «порциями» по мере увеличения строк (stitchdata.com). — PostgreSQL 16 по-прежнему бесплатный «танк» (релиз 16.9 от 8 мая 2025 г.) (postgresql.org). — Metabase с версии 0.49 получил авто-API ключи, улучшенные дашборды и первый публичный AI-роудмап («Metabot») для natural-language-SQL (metabase.com, metabase.com).

Типовые сценарии

  • Агентство: лиды и сделки Bitrix24 → Stitch → Postgres; Metabase чат-бот отвечает «Сколько было сделок со статусом WON за март?» без труда у маркетолога.
  • E-commerce: Stitch тянет рекламные бюджеты Google Ads + Shopify + Bitrix24-CRM, Postgres хранит 24-месячную историю, Metabase строит cohort-чарты.
  • Внутренний IT-отдел: Singer-tap к Jira + Bitrix24, чат-SQL Metabase помогает менеджеру проектировать спринты без знаний SQL.

2. Компоненты и роли

Компонент Роль Ответственный
Bitrix24 Источник CRM, задачи, звонки Маркетолог / sales-аналитик
Stitch Data SaaS-ETL: экстракция и загрузка Data Engineer
Singer tap-bitrix24 Коннектор для Bitrix24 (или Import API) Python-dev
PostgreSQL 16 Централизованное DWH DBA
Metabase 0.49+ BI-надстройка, AI-чат BI-аналитик
(опции) Power BI / Superset 3.0 Доп. визуализация / embed Аналитик / продукт-менеджер

3. Подготовка окружения

3.1 Что установить или создать

Что Где взять
Stitch аккаунт (Standard) Stitch Pricing
PAT Bitrix24 + webhook URL Bitrix24 REST
Singer-tap шаблон Connect other sources
PostgreSQL 16 (Docker) Postgres Docs
Metabase Docker 0.49 Metabase 49

3.2 Мини-docker-compose

version: '3.9'
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: etl
      POSTGRES_PASSWORD: etl_pwd
      POSTGRES_DB: datamart
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    ports: ["5432:5432"]

  metabase:
    image: metabase/metabase:v0.49
    environment:
      MB_DB_TYPE: postgres
      MB_DB_DBNAME: datamart
      MB_DB_PORT: 5432
      MB_DB_USER: etl
      MB_DB_PASS: etl_pwd
      MB_DB_HOST: db
    depends_on: [db]
    ports: ["3000:3000"]

docker compose up -d — Metabase доступен на http://localhost:3000.

3.3 Права

  • Bitrix24 PAT: scope crm + task, лимит 2 r/s.
  • Stitch → Postgres: роль stitch с INSERT, UPDATE на схему stage.
  • Metabase: read-only роль bi_user на mart-схему.
Читай также:  Kafka + Debezium → PostgreSQL → Superset

4. Настройка потоков данных

4.1 Stitch: регистрируем Bitrix24

  1. Add Integration → Import API.
  2. В поле Webhook URL указываем URL https://<company>.bitrix24.ru/rest/<user>/<token>/.
  3. Настраиваем JSON-mapping: crm.deal.list, crm.activity.list, tasks.task.list.
  4. Репликация:

    • Full sync раз в сутки.
    • Incremental по полям DATE_MODIFY (опция REPLICATION KEY).

Singer-tap: если нужен fine-grained контроль, форкаем tap-bitrix24 (Singer-SDK) и подключаем через Stitch External Tap (stitchdata.com, stitchdata.com).

4.2 PostgreSQL: приём данных

Stitch создаёт таблицы вида stitch_bitrix24_deal. Добавим индексы:

CREATE INDEX IF NOT EXISTS ix_deal_modify
ON stitch_bitrix24_deal (date_modify DESC);

Для CDC-истории включите REPLICATION_METHOD = LOG_BASED в Stitch — данные будут писаться diff-логом.

4.3 Версионирование схемы

  • Используйте dbt init bitrix24_dwh, описав stage, ods, mart.
  • Коммитите модели в Git — CICD гонит dbt run после Stitch sync.

5. Трансформации и моделирование

Зона Схема Содержимое
Stage stage Авто-таблицы Stitch
ODS ods Типизированные колонки
Mart mart Бизнес-агрегаты

5.1 Раскладываем JSON-поля

CREATE MATERIALIZED VIEW ods.deal_clean AS
SELECT
    id::int,
    (data->>'TITLE')              AS title,
    (data->>'STAGE_ID')           AS stage,
    (data->>'OPPORTUNITY')::money AS amount,
    (data->>'DATE_CREATE')::timestamptz AS created_at,
    (data->>'DATE_MODIFY')::timestamptz AS updated_at
FROM stage.stitch_bitrix24_deal;

5.2 Марты

CREATE MATERIALIZED VIEW mart.deal_funnel AS
SELECT
    date_trunc('month', created_at)::date AS month,
    stage,
    COUNT(*)                              AS deals_cnt,
    SUM(amount)                           AS pipeline
FROM ods.deal_clean
GROUP BY 1,2;

REFRESH MATERIALIZED VIEW CONCURRENTLY mart.deal_funnel; — в post-Stitch webhook.


6. Визуализация: Metabase, Power BI и Superset

6.1 Metabase (главный герой)

  1. Admin → Databases → Add: Postgres → bi_user.
  2. Explore → Ask a question → Simple question — выберите mart.deal_funnel.
  3. AI-чат (Metabot, feature flag):

    • В search-баре введите: «Покажи конверсию из NEW в WON за Q1 2025».
    • Metabase сгенерирует SQL, который можно отредактировать вручную (SQL-editor) (medium.com, getgalaxy.io).
  4. Сохраняем чарт, добавляем на дашборд «Sales Funnel».

6.2 Power BI (когда нужен .pbix)

  1. Get Data → PostgreSQL (DirectQuery).
  2. Выбираем mart.deal_funnel.
  3. Clustered Column: month × stage.
  4. Публикуем в Power BI Service; шедулер < 8 refresh/day.
Читай также:  Google Sheets → n8n → PostgreSQL → Power BI

6.3 Superset 3.0 (если хотят open-source-embed)

  1. + Databasepostgresql://bi_user@db:5432/datamart.
  2. Dataset → mart.deal_funnel, чарт → Time-series Bar.
  3. Dashboard → публичная ссылка с guest-token. Superset 3.0 сфокусирован на стабильности ядра и уборке legacy кода (preset.io).

7. Мониторинг и автоматизация

Что Инструмент Порог
Stitch rows Stitch Usage UI > 85 % плана
Stitch lag Stitch API /v4/syncs/{id} > 30 мин
Postgres bloat pg_stat_all_tables > 20 %
Metabase health /api/health + Prometheus latency > 500 мс
Backups pg_dump nightly → S3 хранить = 30 дней

8. Типичные ошибки и лайфхаки

  1. «Integration paused (rate limit)» — Stitch превышает 2 r/s Bitrix24; снизьте CONCURRENCY=1, включите incremental sync.
  2. Singer tap вывалился — проверяйте state.json; если битый офсет, удалите файл — Stitch инициирует full-resync.
  3. Metabase не видит новые колонкиSync database schema now в Admin → Databases.
  4. Power BI требует SSL — добавьте ?sslmode=require в DSN либо выставьте MB_DB_SSL=true (Metabase).
  5. Пухнет Postgres stage — включите partitioning по DATE_CREATE и policy DROP PARTITION older than 18 месяцев.

9. Заключение

Связка Stitch Data → PostgreSQL → Metabase закрывает вечный спор «код vs no-код» на уровне SMB:

  • Плюсы:

    • Поддержка 150+ источников, Singer-тэпы для экзотики.
    • Postgres остаётся точкой правды с SQL-магией.
    • Metabase (и его AI-чат) делает self-service-BI без лицензий.
  • Минусы:

    • Stitch тарифицирует строки: каждый миллион — деньги.
    • Лаг минимум 5 мин (Standard).
    • Bitrix24 не официальный источник — придётся готовить tap.

Когда масштабировать?

  • 10 млн строк/день — смотрим Fivetran или Airbyte Cloud.

  • Realtime streaming — Debezium + Kafka.
  • AI-чат обязан отвечать в Teams — подключаем Power BI Copilot.

Полезные ссылки

Теперь ваши Bitrix24-сделки реплицируются «одной кнопкой», а Metabase превращает вопросы «как дела воронка?» в SQL-чарты — и бизнес знает ответ до того, как бариста закрыл смену.