Короткий ответ
Сначала зафиксируйте точное определение метрики и воспроизведите фильтры дашборда. Затем последовательно сравните raw, staging, mart и визуализацию на одном периоде.
Как это работает подробнее
Дашборд часто читает агрегированную витрину, которая обновляется по расписанию и может применять дополнительные фильтры. Ручной запрос к исходной таблице не эквивалентен такой логике по умолчанию.
- Время. Проверьте границы периода, часовую зону и момент последнего обновления.
- Логика. Сверьте статусы, тестовые аккаунты, дедупликацию, валюту и способ агрегации.
- Модель. Убедитесь, что соединения не размножают строки и сравнивается одна грануляция.
Пример кода
dashboard_reconciliation.sql
SELECT SUM(amount) AS revenue
FROM orders
WHERE created_at >= TIMESTAMP '2024-05-01 00:00:00'
AND created_at < TIMESTAMP '2024-05-02 00:00:00'
AND status <> 'test';Что использовать на практике
- Возьмите небольшой закрытый период и одну группу, чтобы локализовать первую точку расхождения.
- Храните определение метрики, SQL или ссылку на модель рядом с дашбордом.
Подводные камни
- Смена нескольких условий. Одновременная правка фильтров мешает понять причину.
- Сравнение несвежих данных. Кэш BI и расписание витрины могут показывать разные срезы.