Business time и system time, поздние изменения, SCD Type 2 и воспроизводимые срезы финансовых данных.
2 мин чтения·База знаний
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.
Четыре даты, которые нельзя подменять друг другом#
В корпоративной финансовой обработке различают как минимум:
Время
Значение
event_at
Когда произошло экономическое событие
business_date
На какой финансовый период отнесена запись
observed_at
Когда система впервые узнала конкретную версию события
loaded_at
Когда эта версия технически попала в EDWH
В упрощённом примере observed_at задаётся источником синтетических данных. В реальной системе момент «известности» требует строгого определения: получение сообщения, фиксация в источнике и успешная публикация в EDWH могут различаться.
SCD Type 2 подходит для сохранения версий справочных атрибутов с интервалами действия. Бухгалтерская корректировка нередко является новым событием (например, сторнированием и новой записью), которое нельзя автоматически заменить SCD-версией старой проводки.
Для финансового EDWH нужно отдельно проектировать:
Версионирование справочника (например, изменение группы финансового счёта).
Сохранение исправлений в журналах финансовых событий.
Пересчёт зависимых агрегатов и снимков по затронутым периодам.
Воспроизводимость старого результата с указанной версией входных данных.
Позднее изменение должно быть объяснимым, воспроизводимым и ограниченно пересчитываемым. Критично знать не только какое значение стало новым, но и почему, на основании каких входных событий и при каком временном срезе.
Financial data processing distinguishes at least these times:
Time
Meaning
event_at
When the economic event occurred
business_date
The financial period to which the record is assigned
observed_at
When the system first learned of this event version
loaded_at
When this version was technically loaded into the EDWH
In the simplified example, observed_at is provided by synthetic data. In a real system, “when it became known” needs a strict definition: message receipt, source persistence, and successful publication to the EDWH may happen at different times.
SCD Type 2 preserves reference-attribute versions with validity intervals. An accounting correction is often a new event, such as a reversal and replacement, and must not automatically be treated as an SCD version of the original entry.
A financial EDWH should separately design:
Reference-data versioning, such as a change to an account group.
Correction history in financial event journals.
Recalculation of dependent aggregates and snapshots for affected periods.
Reproduction of an earlier result using a specified input-data version.
A late change must be explainable, reproducible, and limited in the data it forces us to recalculate. It is essential to know not only the new value, but why it changed, which input events support it, and which time snapshot was used.