АРХИТЕКТУРА EDWHP0L3

Временная семантика и корректировки задним числом

Business time и system time, поздние изменения, SCD Type 2 и воспроизводимые срезы финансовых данных.

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

Четыре даты, которые нельзя подменять друг другом#

В корпоративной финансовой обработке различают как минимум:

Время Значение
event_at Когда произошло экономическое событие
business_date На какой финансовый период отнесена запись
observed_at Когда система впервые узнала конкретную версию события
loaded_at Когда эта версия технически попала в EDWH

В упрощённом примере observed_at задаётся источником синтетических данных. В реальной системе момент «известности» требует строгого определения: получение сообщения, фиксация в источнике и успешная публикация в EDWH могут различаться.

Два осмысленных вопроса#

Как мы считали на 31 января? Отбираем информацию, известную к концу января, по правилам тогдашнего состояния.

Как сейчас пересчитывается январь? Отбираем январские события с учётом более поздних исправлений.

Если в модели есть только одна дата, эти вопросы могут дать один и тот же ответ даже когда должны различаться.

История атрибутов и событий - не одно и то же#

SCD Type 2 подходит для сохранения версий справочных атрибутов с интервалами действия. Бухгалтерская корректировка нередко является новым событием (например, сторнированием и новой записью), которое нельзя автоматически заменить SCD-версией старой проводки.

Для финансового EDWH нужно отдельно проектировать:

  1. Версионирование справочника (например, изменение группы финансового счёта).
  2. Сохранение исправлений в журналах финансовых событий.
  3. Пересчёт зависимых агрегатов и снимков по затронутым периодам.
  4. Воспроизводимость старого результата с указанной версией входных данных.

Иллюстрация#

В январе известна запись расхода 200,00 RUB. В феврале поступает январское сторно −200,00 RUB и новая запись 180,00 RUB.

  • Срез «январь, знания на 31.01»: расход 200,00.
  • Срез «январь, знания на 04.02»: чистый расход 180,00.

В Financial EDWH Lab этот сценарий реализован на синтетических событиях, и оба результата проверяются тестами.

Принцип корректности#

Позднее изменение должно быть объяснимым, воспроизводимым и ограниченно пересчитываемым. Критично знать не только какое значение стало новым, но и почему, на основании каких входных событий и при каком временном срезе.

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

  1. Kimball Group - SCD Type 2 ↗

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