Владелец магазина на Битриксе сталкивается с разрозненными данными: заказы в b_sale_order, трафик в Яндекс.Метрике, цены в отдельном прайсе. Сводить их в Excel — часы работы и ошибки. Мы подключаем Яндекс DataLens напрямую к PostgreSQL, но без правильных индексов и витрин дашборды тормозят. Недавно клиент с каталогом в 500 000 товаров и 1 млн заказов жаловался на 30-секундные запросы. После создания витрины и индексов время выполнения упало до 0,2 секунды. В 70% случаев прямое подключение без индексов даёт время отклика более 10 секунд. После оптимизации время запросов сокращается в среднем на 85%.
Проблемы, которые решаем
-
Прямое подключение — простой доступ к таблицам
b_sale_order,b_catalog_price,b_iblock_element. Но при каждом открытии дашборда выполняется запрос к базе. Если таблица содержит более 500 000 строк, скорость падает. Решаем созданием индексов и ограничением выборки. - Витрина данных — агрегированные таблицы, обновляемые по расписанию. Запросы выполняются за доли секунды, даже на 1 млн заказов. Но задержка обновления до 60 минут приемлема не для всех.
- ClickHouse — потоковая обработка событий: заказы, просмотры, корзины. Свежесть данных — реальное время, но требуется дополнительная инфраструктура.
| Вариант | Скорость запросов | Нагрузка на базу | Свежесть данных | Сложность |
|---|---|---|---|---|
| Прямое подключение | Зависит от размера таблиц | Высокая при каждом запросе | Реальное время | Минимальная |
| Витрина данных | Мгновенно | Низкая | Отставание на 1-60 минут | Средняя |
| ClickHouse + события | Высокая | Низкая | Реальное время + буферизация | Высокая |
Прямое подключение в 3 раза быстрее по свежести, чем витрина, но витрина в 10 раз быстрее по скорости запросов. Выбор зависит от приоритетов. Если не уверены, какой вариант подходит, получите консультацию инженера.
Какую схему данных выбрать?
Для магазина с числом заказов менее 100 000 в месяц прямое подключение подходит, если база имеет индексы. При объёмах свыше 500 000 записей витрина снижает нагрузку на базу в 8–10 раз. ClickHouse оправдан для real-time аналитики с десятками событий в секунду. Мы помогаем подобрать схему после аудита вашей базы.
Как подготовить базу Битрикса для DataLens?
Самый чистый вариант — прямой PostgreSQL-коннектор. Требуется доступность базы из облака Яндекса (белый IP или VPN). Создаём read-only пользователя:
CREATE USER datalens_ro WITH PASSWORD 'strong_password'; GRANT CONNECT ON DATABASE bitrix TO datalens_ro; GRANT USAGE ON SCHEMA public TO datalens_ro; GRANT SELECT ON b_sale_order, b_sale_order_item, b_iblock_element, b_catalog_price, b_user TO datalens_ro; Подробнее в официальной документации 1С-Битрикс по оптимизации базы.
Если база большая (миллионы заказов), лучше использовать витрину данных. Вот пример витрины ежедневных продаж:
CREATE TABLE datalens_orders_daily AS SELECT DATE_TRUNC('day', DATE_INSERT)::DATE AS order_date, CURRENCY AS currency, COUNT(*) AS orders_count, SUM(PRICE) AS revenue, SUM(PRICE_DELIVERY) AS delivery_total, AVG(PRICE) AS avg_order_value FROM b_sale_order WHERE CANCELED = 'N' GROUP BY 1, 2; CREATE INDEX idx_datalens_od_date ON datalens_orders_daily(order_date); Развёрнутый пример витрины с обновлением через агент
function UpdateDataLensOrdersVitrine() { global $DB; $DB->Query(" INSERT INTO datalens_orders_daily SELECT DATE_TRUNC('day', DATE_INSERT)::DATE, CURRENCY, COUNT(*), SUM(PRICE), SUM(PRICE_DELIVERY), AVG(PRICE) FROM b_sale_order WHERE CANCELED = 'N' AND DATE_INSERT >= NOW() - INTERVAL '2 days' GROUP BY 1, 2 ON CONFLICT (order_date, currency) DO UPDATE SET orders_count = EXCLUDED.orders_count, revenue = EXCLUDED.revenue ", false, 'FILE', __LINE__); return \CAgent::DEFAULT_PERIOD; } Что входит в настройку?
- Аудит текущей базы и производительности.
- Выбор способа подключения (прямой, витрина, ClickHouse).
- Создание read-only пользователя и индексов.
- Написание агентов обновления витрин.
- Настройка подключения к DataLens и создание датасетов.
- Разработка дашбордов под ваши KPI: воронка продаж, когортный анализ, ABC-анализ товаров.
- Документация по схеме и обновлению.
- Обучение сотрудников работе с дашбордами.
- Гарантийная поддержка 3 месяца.
Как подключить Яндекс.Метрику как второй источник?
DataLens подключается к Метрике напрямую — достаточно номера счётчика и OAuth-токена. После создания двух подключений (PostgreSQL + Метрика) можно сделать датасет с JOIN по дате: выручка и трафик на одном графике. Так видно, какие рекламные кампании приносят реальные деньги, а не просто клики.
Типичные ошибки при интеграции DataLens с Битриксом
| Ошибка | Решение |
|---|---|
| Нет индексов | Создать индексы на DATE_INSERT, CANCELED, PRICE |
| Нет read-only пользователя | Создать отдельного пользователя с правами SELECT |
| Не настроен агент | Настроить агент с периодом 3600 секунд |
| Слишком много источников | Объединить через витрину, а не через прямые запросы |
Процесс работы
- Аналитика — изучаем структуру вашего Битрикса, состав таблиц и необходимые отчёты.
- Проектирование — выбираем способ подключения (прямой, витрина или ClickHouse), проектируем схему.
- Реализация — настраиваем подключение, создаём витрины или агенты.
- Тестирование — проверяем корректность данных и скорость дашбордов.
- Деплой — переносим в продуктив, документируем.
- Обучение — показываем сотрудникам, как работать с дашбордами.
Сроки реализации
Ориентировочные сроки — от 5 до 15 рабочих дней, в зависимости от сложности (объём данных, количество источников, требования по свежести). Точный срок определяем после аудита вашей базы. Наш опыт — 15+ успешных проектов по интеграции DataLens с Битриксом. Средняя экономия времени менеджера — 40%. Гарантийная поддержка — 3 месяца. Свяжитесь с нами для расчёта стоимости и сроков.







