diff --git a/docs/design/assignment_design.md b/docs/design/assignment_design.md index b186606..b25b86e 100644 --- a/docs/design/assignment_design.md +++ b/docs/design/assignment_design.md @@ -119,6 +119,29 @@ bookings_validate - Кросс-слойная консистентность (row count ODS vs STG) - DM-витрины содержат данные за загруженные дни +### Активная проверка SCD2 (`check_dim_routes_scd2`) + +Справочник `bookings.routes` в демо-базе статичен — маршруты не меняются +между запусками генератора. Поэтому при обычном прогоне пайплайна студент +никогда не увидит, как SCD2 закрывает старую версию и создаёт новую. + +Чтобы проверить корректность реализации, таск `check_dim_routes_scd2` +должен быть **активным** (не только читать, но и тестировать загрузку): + +1. Сохранить текущее состояние `ods.routes` и `dds.dim_routes` (temp-таблицы). +2. Вставить в `ods.routes` тестовый маршрут с изменённым атрибутом + (например, `scheduled_time` → `departure_time` сдвинут на 1 час). +3. Вызвать студенческий SQL загрузки `dim_routes` (`sql/dds/dim_routes_load.sql`). +4. Проверить результат: + - Старая версия маршрута закрыта (`valid_to IS NOT NULL`). + - Новая версия открыта (`valid_to IS NULL`, `hashdiff` отличается). + - Нет «дыр» между `valid_to` старой и `valid_from` новой версии. +5. Откатить изменения: восстановить `ods.routes` и `dds.dim_routes` + из сохранённых temp-таблиц. + +Это единственный способ гарантировать, что SCD2 работает, без мутации +источника (что сломало бы генератор `continue()`). + --- ## 5. Формат ТЗ от аналитика