🌟 Не сошлись в отчётах: как дебажить бизнес-метрики Знакомая ситуация: в двух отчётах выручка отличается на несколько процентов, EBITDA не совпадает с финансовой моделью, а маржинальность почему-то «прыгает». При этом SQL-запросы выглядят корректно, формулы проверены, но цифры разные
Прежде чем делать выводы и принимать бизнес-решения, нужно найти источник расхождения. Разберём, с чего начать
👽 Убедись, что сравниваешь одно и то же
Одинаковое название метрики ещё не означает одинаковую логику расчёта
Например, в P&L могут отличаться:
Revenue: выручка с НДС или без, начисленная или фактически полученная Gross Profit: какие именно затраты включены в себестоимость. EBITDA: какие расходы и корректировки учитываются. OPEX: какие статьи относятся к операционным расходам. Profit Margin: какая прибыль используется в числителе — валовая, операционная или чистая.
Также проверь период признания доходов и расходов, валюту, курс конвертации и правила распределения общих затрат
Первым делом нужно сверить определения метрик и методологию их расчёта 🌟🌟 Разбирай расчёт по слоям
Если итоговая EBITDA не совпадает с финансовым отчётом, не пытайся сразу переписать весь запрос
Двигайся от простого к сложному:
Проверь исходные транзакции и проводки Посчитай выручку и расходы отдельно Сверь промежуточные показатели Постепенно возвращай фильтры, JOIN и бизнес-правила
Так можно определить, на каком именно этапе появляется расхождение: при загрузке данных, агрегации или финальном расчёте
✌️ Проверь JOIN и дубликаты
Одна из частых причин ошибок — неправильная кардинальность соединений
Например, одна транзакция связана с несколькими строками распределения затрат. После JOIN сумма расходов может задвоиться, а вместе с ней изменится и EBITDA
Что проверить:
Сколько строк было до и после JOIN? Уникален ли ключ соединения? Не размножаются ли транзакции? Совпадают ли суммы до и после объединения таблиц?
Если выручка или расходы внезапно выросли после JOIN — это повод проверить кардинальность
🎧 Ищи конкретные записи, а не разницу в итогах
Допустим, в одном P&L выручка составляет 12 млн, а в другом — 12,4 млн
Сама разница в 400 тысяч мало что объясняет. Гораздо полезнее найти операции, которые сформировали эти 400 тысяч
Сравни данные по:
ID транзакций датам операций статьям доходов и расходов подразделениям и бизнес-направлениям
В SQL для этого пригодятся EXCEPT, FULL OUTER JOIN и группировки по ключам
😰 Проверь фильтры и временные границы
Иногда проблема не в формулах, а в том, какие данные попали в отчёт
Например:
один отчёт учитывает операции по дате платежа, другой — по дате признания дохода в одном включены корректировки прошлых периодов отличаются правила обработки возвратов и отмен один отчёт учитывает только проведённые операции
Особенно внимательно проверяй границы периодов, часовые пояса и дату последнего обновления данных