Короткий ответ
Нужно последовательно проверить контекст фильтров, время обновления/кэширования, обработку часового пояса и логику джойнов/агрегации (размножение строк), а также различия в row-level security между моделью дашборда и сырым запросом.
Как это работает подробнее
Дашборды часто работают на извлечении или смоделированных данных (экстракт Tableau, Import mode в Power BI, LOD/меры), которые могут расходиться с прямым запросом к источнику из-за времени обновления, скрытых фильтров или размножения строк в джойнах.
Пример кода
query.sql
SELECT o.order_id, COUNT(*) AS line_cnt
FROM orders o
JOIN order_items oi ON oi.order_id = o.order_id
GROUP BY o.order_id
HAVING COUNT(*) > 1
LIMIT 10;Что использовать на практике
- Рекомендация. Проверьте: (1) работает ли дашборд на кэше/экстракте и когда было последнее обновление.
- Рекомендация. (2) есть ли скрытые фильтры/slicer'ы/RLS.
- Рекомендация. (3) совпадает ли часовой пояс границы «вчера» на дашборде и в SQL.
- Рекомендация. (4) не размножает ли модель данных строки через джойн факта с таблицей «один ко многим», раздувая SUM.
Подводные камни
- Риск. Автоматическое предположение, что SQL-запрос — это «истина», без проверки совпадения определений и фильтров с дашбордом.
- Риск. Игнорирование времени последнего обновления экстракта.
- Риск. Забытая row-level security при воспроизведении числа вручную.
- Риск. Расхождение на один день из-за часового пояса.