Власник магазину на Бітрікс стикається з розрізненими даними: замовлення в 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 місяці. Зв'яжіться з нами для розрахунку вартості та строків.







