Знаковые соглашения, частично аддитивные величины, периодические срезы и контроль расчёта остатков.
2 мин чтения·База знаний
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.
Движение представляет изменение состояния за событие или период. Остаток - состояние на определённый момент времени. Эти величины различаются по правилам агрегирования.
Потоки, например обороты по сопоставимым операциям, могут суммироваться по времени. Остатки на конец месяца нельзя просто сложить по нескольким месяцам, чтобы получить общий остаток: это многократный подсчёт состояния.
В терминологии моделирования DWH такой показатель, как баланс на дату, - пример частично аддитивной меры: по некоторым измерениям суммирование допустимо, но по времени - как правило, нет.
Для учебной модели со знаком debit = +, credit = −:
balance_end(account, currency)
= balance_start(account, currency)
+ sum(signed_journal_lines for period)
Это именно знаковый дебетовый остаток, а не универсальное определение экономического баланса. Отображение активов, пассивов и пользовательских остатков может требовать другого правила знаков и зависит от плана счетов.
Перед расчётом нужно определить: календарный или финансовый период, границу включения операций, учётную книгу, валюту, организационную единицу и ретроспективный срез доступных данных.
Согласование opening + turnover = closing по счёту, валюте и периоду.
Баланс дебета и кредита по документу.
Сравнение количества учётных строк источника и EDWH после разрешённой фильтрации.
Проверка отсутствия дублей по бизнес-ключам.
Сверка пересчитанного остатка с опубликованным снимком состояния.
Нулевая разница агрегированных сумм ещё не доказывает равенство наборов данных: два пропуска могут компенсировать друг друга. Для этого нужен многоуровневый контроль.
Обычно полезно разделить атомарные движения (journal_line) и снимки остатков (account_balance_snapshot). При этом снимок должен содержать ключ периода и сведения о времени формирования либо версию расчёта; он не заменяет исходные движения.
A movement represents a change in state over an event or period. A balance is a state at a particular point in time. Their aggregation rules differ.
Flows such as turnover across comparable operations can be summed over time. Month-end balances cannot simply be added across months to obtain a total balance: that counts the state repeatedly.
In DWH modeling, a balance at a date is a semi-additive measure: it may be summed over some dimensions, but usually not over time.
For the educational sign convention debit = +, credit = −:
balance_end(account, currency)
= balance_start(account, currency)
+ sum(signed_journal_lines for period)
This is a signed debit balance, not a universal definition of an economic balance. Presentation for assets, liabilities, and customer balances may require another sign rule and depends on the chart of accounts.
Before calculating, define calendar or financial periods, transaction boundaries, ledger, currency, organizational unit, and the retrospective data snapshot.
It is usually useful to separate atomic movements (journal_line) from balance snapshots (account_balance_snapshot). A snapshot should include its period key and calculation time or version; it does not replace the underlying movements.