Короткий ответ
Единственного правильного решения нет — обычно вводят централизованный семантический слой (metric layer) с единым каноническим определением ключевых метрик, обязательным для использования во всех дашбордах, но это требует организационных полномочий и может замедлить команды, которым нужна гибкость для локальных задач.
Как это работает подробнее
Семантический слой — это единый источник определений метрик (например, через dbt metrics/Semantic Layer или собственный каталог), из которого все дашборды и отчёты берут готовую формулу вместо того, чтобы каждый аналитик писал SQL заново.
Пример кода
metric-definition.yaml
# dbt Semantic Layer, пример канонического определения
metrics:
- name: revenue_recognized
label: "Признанная выручка (Finance)"
calculation: sum(amount_after_returns)
filters: [status = 'completed']
- name: revenue_gmv
label: "GMV (Marketing)"
calculation: sum(amount_before_returns)Что использовать на практике
- На практике. Внедрение начинается с инвентаризации существующих определений метрики «выручка» в каждой команде, выявления содержательных причин расхождений (например, Finance учитывает возвраты, Marketing — нет) и согласования единого канонического определения с явным владельцем, который утверждает любые будущие изменения.
- Проверка. после внедрения — любой новый дашборд обязан ссылаться на metrics.revenue_recognized или metrics.revenue_gmv по имени, а не писать свой SQL; расхождение в цифрах между дашбордами, использующими одну и ту же именованную метрику, становится багом, а не «особенностью команды».
Подводные камни
- Частые ошибки. Пытаются навязать единую метрику директивно без обсуждения, почему у команд разные определения — часто расхождения не являются ошибкой, а отражают разные легитимные бизнес-вопросы (признанная выручка для финансовой отчётности vs валовый GMV для маркетинга), и попытка свести всё к одному числу теряет нужную информацию.
- Компромисс. Полная централизация метрик повышает согласованность, но увеличивает время согласования изменений и может фрустрировать команды, которым нужна метрика «здесь и сейчас» для локального эксперимента. Альтернатива — допустить несколько именованных вариантов метрики (revenue_recognized, revenue_gmv) с явной документацией различий вместо одной «истинной» версии; выбор зависит от того, насколько критичны для бизнеса именно единые отчёты перед руководством против скорости работы отдельных команд. Единственно верного ответа здесь нет — решение зависит от организационной зрелости и цены ошибки от рассинхрона.