Методы аналитикиПродвинутый
SCD (Slowly Changing Dimensions)
Техники хранения истории изменений атрибутов в измерениях DWH — что делать с фактами, когда, например, город клиента меняется со временем.
Формула расчёта
SCD Type 2: (dimension_key, natural_id, ..., valid_from, valid_to, is_current)
Объяснение
Slowly Changing Dimensions — стандартные подходы к вопросу «пользователь переехал из Москвы в Питер — что делать со старыми фактами (заказами), где он числился жителем Москвы?». Type 1 — просто перезаписать значение, история теряется (годится, когда прошлое значение не важно). Type 2 — не перезаписывать, а добавить новую строку с новым значением и датами действия (valid_from/valid_to, is_current), сохранив старую — история сохраняется полностью, это самый частый выбор в реальных DWH.
Реже встречаются: Type 3 хранит текущее и предыдущее значение в отдельных колонках одной строки (только «было/стало», без полной истории); Type 4 выносит историю в отдельную таблицу, оставляя в основной только текущее значение. На практике почти всегда выбирают между Type 1 (история не важна) и Type 2 (нужна полная история).
Числовой пример
Клиент 42 жил в Москве, потом переехал в Питер — SCD Type 2 в dim_customer: customer_key | customer_id | city | valid_from | valid_to | is_current 1 | 42 | Москва | 2024-01-01 | 2025-06-01 | false 2 | 42 | Питер | 2025-06-01 | NULL | true Заказы до июня 2025 ссылаются на customer_key=1 (город на момент заказа), после — на customer_key=2.