Интеграция Битрикс24 с Tableau
Руководитель просит отчёт по воронке продаж за квартал. Менеджер выгружает данные из Б24 в Excel, чистит дубли, строит сводную таблицу, вручную считает конверсию по этапам. Через два дня данные устарели — нужно повторять. В Б24 есть встроенная аналитика, но для сложных срезов (когортный анализ, перекрёстные отчёты по каналам и менеджерам, динамика LTV) её недостаточно. Tableau решает эту задачу, но данные туда нужно ещё доставить.
Архитектура решения
Tableau не подключается к Б24 напрямую — нет нативного коннектора. Связка работает через промежуточное хранилище:
Б24 REST API → ETL-скрипт → PostgreSQL/MySQL → Tableau Desktop/Server → дашборд
ETL-скрипт (на Python, Node.js или PHP) извлекает данные из Б24 через REST API, трансформирует и загружает в реляционную базу. Tableau подключается к этой базе как к обычному источнику данных.
Альтернативный вариант — Tableau Web Data Connector (WDC). Это JavaScript-приложение, которое Tableau вызывает для получения данных. WDC обращается к middleware, который запрашивает данные из Б24 REST API и возвращает их в формате, понятном Tableau. Подходит для небольших объёмов, но для серьёзной аналитики промежуточная база надёжнее.
Какие данные извлекаем
Б24 REST API предоставляет доступ к основным сущностям CRM и не только:
| Сущность | Метод API | Ключевые поля |
|---|---|---|
| Лиды | crm.lead.list |
Статус, источник, UTM-метки, сумма, ответственный, дата создания |
| Сделки | crm.deal.list |
Стадия, воронка, сумма, дата закрытия, контакт, компания |
| Контакты | crm.contact.list |
ФИО, компания, тип, источник |
| Компании | crm.company.list |
Название, отрасль, выручка, тип |
| Товарные позиции | crm.item.productrow.list |
Товар, количество, цена, скидка, привязка к сделке |
| Активности | crm.activity.list |
Тип (звонок, письмо, встреча), дата, длительность |
| Задачи | tasks.task.list |
Статус, исполнитель, дедлайн, затраченное время |
| Телефония | voximplant.statistic.get |
Длительность, тип, запись, привязка к CRM |
Кастомные поля (UF_CRM_*) выгружаются автоматически — ETL-скрипт запрашивает список полей через crm.deal.fields и включает их в выгрузку.
ETL-процесс
Extract. Скрипт вызывает REST API с пагинацией. Б24 отдаёт максимум 50 записей за запрос для большинства методов. При 10 000 сделок — 200 запросов. С учётом лимита 2 запроса в секунду — 100 секунд. Для ускорения используем batch-запросы (до 50 вызовов в одном batch), что сокращает время в десятки раз.
Инкрементальная выгрузка: после первой полной загрузки скрипт запрашивает только записи, изменённые после последнего запуска (фильтр >DATE_MODIFY). Это сокращает объём данных и время выполнения.
Transform. Данные из Б24 приходят в специфичном формате:
- Стадии сделок — в виде кодов (
C1:NEW,C1:WON). Скрипт подставляет человекочитаемые названия из справочника (crm.status.list). - Множественные поля (телефоны, email) — массивы объектов. Скрипт разворачивает их в отдельные колонки или строки.
- Даты — в формате ISO 8601 с таймзоной портала. Конвертируются в UTC.
- Связи (контакт → компания → сделка) — денормализуются: к каждой сделке добавляются поля контакта и компании.
Load. Данные записываются в PostgreSQL (или MySQL). Структура таблиц:
-
crm_deals— сделки с денормализованными полями -
crm_leads— лиды -
crm_activities— активности с привязкой к сделкам -
crm_products— товарные позиции -
dim_stages— справочник стадий -
dim_sources— справочник источников -
dim_users— сотрудники (ответственные, менеджеры)
Структура «факт + справочник» — стандартная для BI. Tableau строит связи между таблицами и позволяет создавать любые срезы.
Дашборды в Tableau
Типовые дашборды, которые строим на данных Б24:
Воронка продаж. Конверсия между этапами, средний цикл сделки, сумма по стадиям. Фильтры: период, менеджер, воронка, источник. Горизонтальная воронка с абсолютными числами и процентами конверсии.
Аналитика менеджеров. Количество сделок, сумма закрытых, средний чек, конверсия из лида в сделку, среднее время на этапе. Ранжирование менеджеров по KPI. Drill-down до конкретных сделок.
Источники лидов. ROI по каналам: UTM-метки → лиды → сделки → сумма. Сравнение каналов по конверсии и среднему чеку. Динамика по месяцам.
Когортный анализ. Лиды, сгруппированные по месяцу создания, с отслеживанием конверсии в сделку и оплату в последующие месяцы. Показывает, улучшается ли качество лидов и работа отдела продаж.
Активность. Звонки, письма, встречи по дням и менеджерам. Корреляция активности с закрытыми сделками. Выявление паттернов: сколько касаний нужно для закрытия сделки.
Автоматическое обновление
ETL-скрипт запускается по расписанию:
- Ежечасно — инкрементальная выгрузка изменённых записей. Дашборды в Tableau Server обновляются автоматически по привязанному расписанию extract refresh.
- Ежедневно (ночь) — полная перезагрузка для гарантии консистентности.
- Вручную — кнопка в middleware для принудительного обновления перед важным совещанием.
Tableau Server/Online поддерживает scheduled extract refresh — автоматическое обновление данных из подключённой базы в заданное время.
Что внедряем
- ETL-скрипт для извлечения данных из Б24 REST API в реляционную базу
- Структуру промежуточной базы данных, оптимизированную для BI-аналитики
- Подключение Tableau к промежуточной базе
- Набор типовых дашбордов: воронка, менеджеры, источники, когорты, активность
- Настройку расписания автоматического обновления данных
- Инкрементальную выгрузку для минимизации нагрузки на Б24 API







