Ответ
Slowly Changing Dimensions (SCD) — это методология в хранилищах данных для управления историей изменений в таблицах-измерениях (например, клиенты, продукты). Основные типы:
-
Тип 1: Перезапись
- Стратегия: Старые данные перезаписываются новыми. История не сохраняется.
- Использование: Для исправления ошибок или когда история изменений не важна.
-- Изменение города клиента. Старое значение теряется. UPDATE dim_customer SET city = 'Новосибирск' WHERE customer_id = 123;
-
Тип 2: Добавление новой версии
- Стратегия: При изменении атрибута создается новая строка с обновленными данными. Старая строка помечается как неактуальная. Это самый распространенный тип для сохранения полной истории.
- Использование: Когда требуется полный аудит изменений.
-- 1. Помечаем старую запись как неактивную UPDATE dim_customer SET is_current = FALSE, valid_to = CURRENT_DATE - 1 WHERE customer_id = 123 AND is_current = TRUE;
-- 2. Добавляем новую запись INSERT INTO dim_customer (customer_id, name, city, is_current, valid_from, valid_to) VALUES (123, 'Иван Иванов', 'Новосибирск', TRUE, CURRENT_DATE, NULL);
-
Тип 3: Добавление нового столбца
- Стратегия: Добавляются дополнительные столбцы для хранения предыдущего значения атрибута. Сохраняет только ограниченную историю (обычно одно предыдущее состояние).
- Использование: Когда важно отслеживать конкретное изменение (например, предыдущий почтовый индекс).
-- Добавляем столбец для предыдущего города ALTER TABLE dim_customer ADD COLUMN previous_city VARCHAR(100);
-- При изменении обновляем оба столбца UPDATE dim_customer SET previous_city = city, city = 'Новосибирск' WHERE customer_id = 123;
Выбор типа зависит от бизнес-требований к детализации истории, производительности и сложности ETL-процессов.