ФИНАНСОВАЯ ОБЛАСТЬP0L3

Обороты, остатки и финансовые инварианты

Знаковые соглашения, частично аддитивные величины, периодические срезы и контроль расчёта остатков.

Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.

Движение и состояние - разные типы данных#

Движение представляет изменение состояния за событие или период. Остаток - состояние на определённый момент времени. Эти величины различаются по правилам агрегирования.

Потоки, например обороты по сопоставимым операциям, могут суммироваться по времени. Остатки на конец месяца нельзя просто сложить по нескольким месяцам, чтобы получить общий остаток: это многократный подсчёт состояния.

В терминологии моделирования DWH такой показатель, как баланс на дату, - пример частично аддитивной меры: по некоторым измерениям суммирование допустимо, но по времени - как правило, нет.

Алгебра остатка#

Для учебной модели со знаком debit = +, credit = −:

balance_end(account, currency)
  = balance_start(account, currency)
  + sum(signed_journal_lines for period)

Это именно знаковый дебетовый остаток, а не универсальное определение экономического баланса. Отображение активов, пассивов и пользовательских остатков может требовать другого правила знаков и зависит от плана счетов.

Перед расчётом нужно определить: календарный или финансовый период, границу включения операций, учётную книгу, валюту, организационную единицу и ретроспективный срез доступных данных.

Два независимых среза#

Предположим, операция с учётной датой 12 января исправлена 3 февраля.

  • Состояние января, известное на 31 января, должно показывать первоначальную информацию.
  • Состояние января, известное на 4 февраля, должно учитывать позднюю корректировку, если правила расчёта допускают её применение к январю.

Запрос только по business_date не различит эти представления. Требуется отдельное поле времени известности или журнал версий источника.

Контрольные соотношения#

Минимальный набор независимых проверок:

  1. Согласование opening + turnover = closing по счёту, валюте и периоду.
  2. Баланс дебета и кредита по документу.
  3. Сравнение количества учётных строк источника и EDWH после разрешённой фильтрации.
  4. Проверка отсутствия дублей по бизнес-ключам.
  5. Сверка пересчитанного остатка с опубликованным снимком состояния.

Нулевая разница агрегированных сумм ещё не доказывает равенство наборов данных: два пропуска могут компенсировать друг друга. Для этого нужен многоуровневый контроль.

Моделирование#

Обычно полезно разделить атомарные движения (journal_line) и снимки остатков (account_balance_snapshot). При этом снимок должен содержать ключ периода и сведения о времени формирования либо версию расчёта; он не заменяет исходные движения.

Источники и документация

  1. Kimball Group - Dimensional Modeling Techniques ↗

Источники нужны для самостоятельной проверки. Примеры и интерпретации на сайте могут быть учебными упрощениями.