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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция Битрикс24 с Power BI
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1165
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    563
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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

Отдел аналитики строит отчёты вручную в Excel, скачивая данные из Битрикс24 раз в неделю. Данные устаревают на момент презентации. Power BI с прямым подключением к REST API Битрикс24 обновляет дашборды автоматически — раз в час или по расписанию.

Два подхода к подключению

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

Подход 2. ETL-процесс → промежуточная БД → Power BI — Python/Node.js скрипт выгружает данные из Битрикс24 API в PostgreSQL/MySQL, Power BI подключается к SQL-базе. Правильный подход для production: надёжнее, быстрее, не зависит от лимитов REST API в момент обновления отчёта.

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

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

ETL-скрипт запускается по расписанию (каждый час через cron). Схема БД — денормализованные таблицы под аналитические запросы:

-- Факт-таблица сделок
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

Битрикс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()

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

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

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

Обновление данных в 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: система сама определяет диапазон новых данных по полю даты и догружает только изменения.

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