Меры корректны, знаки на месте, баланс сходится — и всё равно дашборд может тихо врать. Самые коварные ошибки финансовой модели не «падают» с ошибкой, а выдают правдоподобное число, которое неверно. Соберём четыре главных ловушки агрегации.
Научиться распознавать четыре места, где данные смешиваются неправомерно: начисление с кассой, внутригрупповые обороты, разные валюты и разная гранулярность. И заложить в модель защиту от каждого.
Ловушка 1. Начисление и касса в одном флаконе
P&L строится по методу начисления (выручка — по отгрузке), ДДС — по кассе (деньги по факту). Это две разные системы измерения (см. урок 03 и 11), и смешивать их в одном показателе нельзя.
Классическая ошибка — посчитать «прибыль» как выручка (начисление) − оплаченные расходы (касса). Получится гибрид, который не равен ни прибыли, ни денежному потоку, и не сходится ни с одним отчётом. Выручку сравнивают с расходами по начислению (→ прибыль), поступления сравнивают с платежами (→ денежный поток). Эти два мира соединяет только косвенный метод через изменения оборотного капитала (урок 03), а не прямое вычитание.
Защита в модели: помечать каждую меру и факт-таблицу признаком базиса (начисление/касса), не давать им смешиваться в одном визуале, а переход между мирами показывать явным мостом (waterfall «прибыль → денежный поток»).
Ловушка 2. Внутригрупповые обороты и элиминация
Если бизнес — это несколько юрлиц (торговый дом продаёт через розничную «дочку», производство отгружает сбытовой компании), внутри группы возникают взаимные обороты: одна компания продала другой.
Если просто сложить выручку всех компаний группы, внутренние продажи посчитаются дважды: как выручка продавца и потом как выручка конечной перепродажи. Консолидированная выручка группы должна исключать внутригрупповые обороты — это называется элиминация. То же с внутренними долгами (дебиторка одной = кредиторка другой) и внутренней прибылью в запасах. Без элиминации группа выглядит крупнее и прибыльнее, чем есть.
Нужны два признака: какой компании принадлежит оборот и кто контрагент. Если контрагент — тоже компания группы, оборот помечается как внутренний. Консолидированные меры считают всего − внутренние:
Выручка группы =
CALCULATE (
[Выручка],
Контрагент[ВнутриГруппы] = FALSE
)
Это требует, чтобы в справочнике контрагентов был флаг принадлежности к группе. Без него консолидация невозможна — и это снова вопрос аналитики в источнике (урок 12).
Ловушка 3. Мультивалюта
Операции в разных валютах нельзя складывать «по номиналу»: 100 $ + 100 ₽ ≠ 200 чего-либо. Нужен пересчёт по курсу — но по какому?
- Обороты (выручка, расходы, потоки) пересчитываются по курсу на дату операции — так фиксируется реальная стоимость в момент сделки.
- Остатки в валюте (валютный счёт, валютная дебиторка) переоцениваются по курсу на дату отчёта — иначе баланс не отразит текущую стоимость.
- Разница между ними — курсовая разница, которая идёт в прочие доходы/расходы (счёт 91) и сама по себе влияет на прибыль, не будучи операционной.
Защита в модели: хранить сумму и в валюте операции, и в валюте отчёта (с курсом на дату); никогда не суммировать суммы в разных валютах одной мерой без пересчёта; курсовые разницы выделять отдельной статьёй, чтобы не путать с операционным результатом.
Ловушка 4. Разная гранулярность фактов
Финансовые данные приходят с разной детализацией: продажи — по каждой накладной, бюджет — помесячно по статье, аренда — одной суммой в год. Свести их в один факт «в лоб» нельзя.
Если план задан по месяцам, а факт — по дням, то на уровне дня плана просто нет, и Отклонение = Факт − План покажет «факт минус пусто» = весь факт как перерасход. Сравнивать план и факт можно только на той гранулярности, на которой существуют оба (здесь — месяц и выше). В модели это решают приведением фактов к общему зерну или мерами, которые сравнивают только на совместимом уровне (через ISINSCOPE/проверку уровня).
Связанная проблема — связи многие-ко-многим через субконто: если факт связан с измерением через таблицу с дублями, одна строка оборота может «размножиться» при соединении и задвоить сумму. Поэтому гранулярность факта и кратность связей проверяют до того, как доверять итогам.
Общий принцип защиты
Все четыре ловушки — частные случаи одного правила: суммировать допустимо только величины одной природы. Один базис (начисление или касса), один периметр (с элиминацией или без), одна валюта (после пересчёта), одно зерно. Перед тем как вывести итог, спросите себя: а однородно ли то, что я складываю? Если нет — итог правдоподобен, но ложен. Это и отличает аналитика, понимающего финансы, от того, кто механически тянет SUM.
Как это проверить
Те же три равенства из урока 05 ловят большинство таких ошибок: задвоенная внутригрупповая выручка или непересчитанная валюта почти всегда рассыпают сходимость баланса и связку «прибыль → капитал». Служебная страница с инвариантами — ваш детектор тихого вранья.
Что дальше
Модель данных готова и защищена от ловушек. Дальше — самое визуальное: как нарисовать каждый отчёт, чтобы он отвечал на вопросы первого лица. Начнём с P&L как водопада и декомпозиции отклонения план-факт. Следующий модуль.