Від повільного запиту й цифр, яким не вірять — до вітрини даних і дашборда, який не бреше
Показуємо весь шлях на одному прикладі: звітний SQL-запит, що гальмував живий дашборд, зіркова схема з materialized views під нього, готовий BI-дашборд на 4 графіки — і окремо реальний випадок, коли цифри в двох звітах розійшлися, та як ми це ловимо.
До / після на реальному звітному запиті
Запит для дашборда «виручка по каналах за період» з join'ами по 4 таблицях і корельованими підзапитами під фільтр повернень.
Що це дало замовнику
- Дашборд у Tableau відкривався за >40 с і половина фільтрів давала таймаут — тепер відкриття <1 с, фільтри живі.
- Звіт, який раніше рахували вночі окремим cron-скриптом «про запас», більше не потрібен — дані завжди свіжі.
- Той самий запит тепер витримує паралельні звернення кількох аналітиків одночасно без деградації.
Зіркова схема під дашборд
Таблиця фактів + виміри, зверху — прошаровані materialized views, з яких і читає BI-інструмент (Power BI / ClickHouse). Дашборд ніколи не читає сирі транзакційні таблиці напряму.
Готовий дашборд на живих (синтетичних) цифрах
4 графіки + зведена таблиця, одна візуальна система замість набору випадкових картинок.
Чому цифри в двох звітах розійшлись — і як ми це ловимо
Реальний тип розбіжності (числа — синтетичний приклад для демо): дашборд Tableau і фінансовий вивід за той самий місяць показали різну виручку.
| Крок перевірки | Знайдено | Замовлень | Сума, ₴ |
|---|---|---|---|
| 1. Звірка сум по днях між джерелами | Розбіжність саме на межі 31 травня / 1 червня | — | — |
| 2. Порівняння часових поясів запису | SQL-запит округлював час по UTC, фінансовий вивід — по Europe/Kyiv | — | — |
| 3. Замовлення 31.05 21:00–23:59 Kyiv (UTC 18:00–20:59) | Потрапили у звіт за 1 червня замість 31 травня | 41 | 51 550 |
| 4. Виправлення межі дня в mv_daily_sales | Обидва звіти зійшлись день у день | 0 | 0 |
Потрібно прискорити свої звіти чи звести цифри в дашборді?
Пришліть повільний запит або приклад розбіжності — скажемо, у чому справа, і покажемо план. Фікс-ціна, строк у днях.