Интеграция Битрикс24 с Power BI: автоматические дашборды и отчёты

Отчёты вручную в Excel устаревают к понедельнику, а аналитикам приходится тратить часы на сбор данных. Мы разрабатываем автоматический ETL-пайплайн, который напрямую подключает Power BI к REST API Битрикс24. Наша команда реализует проект под ключ — от настройки выгрузки до создания дашбордов, обеспечивая стабильную работу и последующую поддержку.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция Битрикс24 с Power BI: автоматические дашборды и отчёты
Средний
~1-2 недели

Наши компетенции:

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1532
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1045
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    820
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    915
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    853
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1209

Интеграция Битрикс24 с Power BI

Мы более 8 лет занимаемся интеграциями Битрикс24 и построением аналитических дашбордов. В каждом втором проекте слышим: «Отдел аналитики строит отчёты вручную в Excel, выгрузка раз в неделю, данные устаревают к понедельнику». Наше решение — ETL-пайплайн с прямым подключением Power BI к REST API Битрикс24. Дашборды обновляются автоматически до 8 раз в сутки. Это сокращает затраты на ручной сбор данных до 80% и экономит десятки часов ежемесячно.

Как выбрать подход для подключения?

Вариант 1 — Power BI Dataflow + REST API. Настраивается в Power BI Service через коннектор «Web» с вебхуком Битрикс24. Подходит для небольших объёмов — до 50 000 записей. Минус: отсутствие контроля над ошибками и лимит на количество запросов.

Вариант 2 — ETL-процесс → промежуточная БД → Power BI. Промежуточным слоем выступает PostgreSQL или MariaDB. ETL-скрипт (Python или Node.js) выгружает данные из REST API, трансформирует и складывает в аналитические таблицы. Power BI подключается к базе через ODBC. Это production-подход: надёжнее, быстрее, не зависит от капризов API при обновлении отчёта.

Для большей части клиентов рекомендуем второй вариант. Он позволяет гибко управлять расписанием, делать денормализованные срезы и легко масштабироваться при росте данных.

Архитектура ETL-процесса на продакшене

Битрикс24 REST API → Python ETL → PostgreSQL (аналитическая схема) → Power BI 

ETL-скрипт запускается по cron каждый час. Схема базы — денормализованные таблицы, оптимизированные под аналитические запросы. В отличие от OLTP-схемы Битрикс24, здесь минимум JOIN-ов: факты (сделки, лиды) и измерения (пользователи, стадии, воронки).

-- Факт-таблица сделок
CREATE TABLE b24_deals (
    id BIGINT PRIMARY KEY,
    title TEXT,
    stage_id VARCHAR(50),
    amount NUMERIC(15,2),
    currency VARCHAR(3),
    assigned_id INT,
    contact_id INT,
    company_id INT,
    created_date TIMESTAMP,
    closed_date TIMESTAMP,
    pipeline_id INT
);

-- Измерения
CREATE TABLE b24_users (
    id INT PRIMARY KEY,
    full_name TEXT,
    department TEXT,
    email TEXT
);

CREATE TABLE b24_stages (
    id VARCHAR(50) PRIMARY KEY,
    name TEXT,
    pipeline_id INT,
    sort INT,
    is_final BOOL
);

Выгрузка данных через REST API на Python

Битрикс24 REST API возвращает данные постранично — по 50 записей. Итеративный сбор реализуется простым циклом:

import requests
import psycopg2

WEBHOOK = "https://your-domain.bitrix24.ru/rest/1/token/"
PG_CONN = "postgresql://user:pass@localhost/analytics"

def fetch_all(method, params=None):
    """Постраничная выгрузка из Б24 API"""
    items, start = [], 0
    while True:
        r = requests.post(WEBHOOK + method, json={
            **(params or {}),
            "start": start
        }).json()
        items.extend(r.get("result", []))
        if r.get("next") is None:
            break
        start = r["next"]
    return items

def sync_deals():
    deals = fetch_all("crm.deal.list", {
        "select": ["ID","TITLE","STAGE_ID","OPPORTUNITY","CURRENCY_ID",
                   "ASSIGNED_BY_ID","CONTACT_ID","COMPANY_ID",
                   "DATE_CREATE","CLOSEDATE","CATEGORY_ID"],
        "filter": {">=DATE_MODIFY": last_sync_timestamp()},
    })
    conn = psycopg2.connect(PG_CONN)
    cur = conn.cursor()
    for d in deals:
        cur.execute("""
            INSERT INTO b24_deals VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
            ON CONFLICT (id) DO UPDATE SET
                stage_id=EXCLUDED.stage_id,
                amount=EXCLUDED.amount,
                closed_date=EXCLUDED.closed_date
        """, (d["ID"], d["TITLE"], d["STAGE_ID"], ...))
    conn.commit()

Подход гарантирует актуальность данных: каждый час скрипт забирает только те записи, у которых изменилось поле DATE_MODIFY. Поле поддерживается для всех объектов CRM согласно REST API.

Ключевые метрики для дашборда

Power BI строит дашборд поверх аналитических таблиц. Типовые визуализации:

Метрика Источник
Воронка сделок по стадиям b24_deals GROUP BY stage_id
Выручка по менеджерам b24_deals JOIN b24_users
Конверсия лид → сделка → оплата b24_leads JOIN b24_deals
Среднее время в стадии Расчёт по timestamp переходов
Нагрузка по менеджерам (активные сделки) Фильтр is_final = false

Почему стоит выбрать ETL с промежуточной БД?

Прямое подключение через Dataflow часто ломается при обновлении данных из-за ограничений REST API. ETL-прослойка решает эту проблему: ошибки логируются, пропущенные пакеты догружаются повторно. К тому же, вы заранее денормализуете данные, что ускоряет отрисовку дашбордов в 3–5 раз.

Обновление данных в Power BI Service

В Power BI Service настраивается расписание обновления датасета: подключение к PostgreSQL через On-premises data gateway (если БД локальная) или к облачной PostgreSQL напрямую. Частота обновления — от 1 раза в сутки (бесплатный план) до 8 раз в сутки (Premium Per User).

Для оперативного мониторинга продаж настраиваем DirectQuery (реальное время) вместо Import Mode. Минус: запросы к БД при каждом открытии отчёта, нагрузка на базу.

Как часто обновляются данные и что даёт инкрементальная загрузка?

При объёме более 100 000 сделок полная перезагрузка каждый час — нерациональна. В Power BI Premium настраиваем Incremental Refresh: система сама определяет диапазон новых данных по дате и догружает только изменения. Это снижает нагрузку на CRM и ускоряет обновление отчётов.

Задача Трудозатраты
ETL-скрипт (Python + psycopg2) 8–12 ч
Схема аналитической БД 4–6 ч
Дашборд в Power BI (5–7 отчётов) 8–16 ч
Настройка расписания и мониторинга 3–4 ч

Что входит в работу

Каждый проект по интеграции Битрикс24 с Power BI включает:

  • Документирование схемы данных и ограничений REST API
  • Разработку ETL-скрипта с инкрементальной загрузкой
  • Создание аналитической базы данных (PostgreSQL/MariaDB)
  • Дашборд Power BI с 5–7 отчётами (воронка, выручка, конверсия, нагрузка)
  • Настройку обновления данных и мониторинг ошибок
  • Обучение сотрудников работе с дашбордом

Гарантируем поддержку в течение 3 месяцев после сдачи. За 8 лет мы выполнили более 120 проектов по интеграции Битрикс24 с различными системами.

Оценим ваш проект — напишите нам, чтобы обсудить детали. Закажите интеграцию под ключ: от аудита данных до дашборда в Power BI.

Свяжитесь с нами для консультации — поможем выбрать оптимальный подход под ваши объёмы.