From c9856f0c95e3a461b92694005222a2e811f878c1 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Wed, 11 Mar 2026 22:01:13 +0300 Subject: [PATCH] =?UTF-8?q?docs(design):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20SCD2=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20dim=5Froutes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - необходимо гарантировать проверку логики SCD2 в учебном проекте, так как исходные данные статичны и не вызывают срабатывание SCD2 естественным образом. - Что: - добавлен раздел "Активная проверка SCD2" в дизайн задания (assignment_design.md). - описан алгоритм с использованием временных таблиц для тестирования закрытия старых и открытия новых версий записей. - Проверка: - визуальный осмотр обновленного раздела в docs/design/assignment_design.md. --- docs/design/assignment_design.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) 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. Формат ТЗ от аналитика