Медленно меняющиеся измерения (от англ. Slowly Changing Dimensions, SCD) — механизм отслеживания изменений в данных измерения в терминах хранилища данных[1][2]. Применяется в случае, если данные меняются не очень часто и не по расписанию. Примером могут служить географические данные (местонахождение склада, юридический адрес организации), статус заказчика по программе лояльности или отдел компании, в котором работает её сотрудник[3].
Нулевой тип (SCD0) является пассивным методом, так как предполагается, что значения атрибутов такого типа не будут меняться. Примерами могут служить дата создания записи, дата и место рождения, серийный номер устройства[5].
Пример:
Таблица с оригинальными данными
Серия и номер паспорта
ФИО
Место рождения
1800 223111
Иванов Сергей Петрович
г. Кызыл
Тип 1
Первый тип (SCD1) использует простое затирание: данные в таблице полностью заменяются на новые (самые актуальные). Историчность при этом полностью теряется, то есть после обновления невозможно отследить цепочку изменений[6].
Пример:
Суррогатный ключ (ID записи) остаётся прежним. Значения полей «Должность» и «Отдел» заменяются на новые. Бизнес-ключ (Табельный номер) в данном примере не меняется, но может быть изменён при необходимости по аналогии с другими полями.
Таблица с оригинальными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
Таблица с обновлёнными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
1026
ИБ-69420
Иванов Сергей Петрович
Главный специалист
Отдел продаж
Тип 2
Второй тип (SCD2) использует добавление новой строки и дополнительных столбцов. Такой подход позволяет сохранить историчность.
Дополнительно можно добавить служебные столбцы, которые могут отвечать за версионирование, статус, временной интервал, в течение которого данные строки можно считать актуальными.
Пример: Суррогатный ключ (ID записи) создаётся новый. Бизнес-ключ (Табельный номер) не меняется, что позволяет связать добавленную строку с оригинальной[3].
Таблица с оригинальными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
Добавилась только строка
В добавленной строке содержатся новые значения полей «Должность» и «Отдел».
Таблица с обновлёнными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
1027
ИБ-69420
Иванов Сергей Петрович
Главный специалист
Отдел продаж
Добавилась строка и столбец с флагом
В добавленной строке содержатся новые значения полей «Должность» и «Отдел». В добавленном столбце содержится статус записи в таблице. Помимо такого статуса может использоваться любой другой флаг, например, этап согласования.
Таблица с обновлёнными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
Статус
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
FALSE
1027
ИБ-69420
Иванов Сергей Петрович
Главный специалист
Отдел продаж
TRUE
Добавилась строка и столбец с версией
Таблица с обновлёнными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
Версия
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
0
1027
ИБ-69420
Иванов Сергей Петрович
Главный специалист
Отдел продаж
1
С каждым новым изменением номер версии инкрементально растёт.
Добавилась строка и столбцы с диапазоном
Таблица с обновлёнными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
Дата начала
Дата окончания
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
2000-01-01T00:00:00
2008-08-08T00:00:00
1027
ИБ-69420
Иванов Сергей Петрович
Главный специалист
Отдел продаж
2008-08-08T00:00:00
NULL
Вместо NULL в значении столбца «Дата окончания» для обозначения того, что строка наиболее актуальная, можно использовать значение «9999-12-31T00:00:00».
Значение даты окончания предыдущей строки совпадает со значением даты начала следующей строки.
Добавилась строка и столбцы с датой вступления изменения в силу
Таблица с обновлёнными данными
ID записи
Табельный номер
ФИО
Должность
Отдел
Дата вступления в силу
Статус
1026
ИБ-69420
Иванов Сергей Петрович
Младший специалист
Отдел оптовых закупок
2000-01-01T00:00:00
TRUE
1027
ИБ-69420
Иванов Сергей Петрович
Главный специалист
Отдел продаж
2008-08-08T00:00:00
FALSE
Тип 3
Третий тип (SCD3) использует добавление новых столбцов-атрибутов, хранящих предыдущее значение для поддержания историчности. Такой тип в чистом виде возникает редко[7], и нужен бизнесу для ситуаций, когда необходимо отслеживать изменения только по конкретным параметрам.
Третий тип сохраняет лишь ограниченную историчность (с точностью только до предыдущего значения), что делает его менее содержательным по сравнению с типом 2[9].
Сафрончик М. И.Ч.1 Проектирование хранилищ данных // Проектирование и реализация решений по бизнес-аналитике на базе Microsoft SQL Server 2012. — Lulu.com, 2015. — 124 с. — (Учебное пособие). — ISBN 1329780132. — ISBN 978-1329780132.
Dmitriy Beryoza, MaryAlice Campbell, Cesar Cardorelle, Tod Creasey, David Cushing, Vlaunir Da Silva, Sean David, Avery Hagleitner, Ian Henderson, Daniel Howell, Igor Kozine, Paul Prieto, Paul Thompson, Jose Vazquez, Ying Zhang. IBM Cognos Dynamic Cubes. — IBM Redbooks, 2015. — 584 с. — ISBN 0738440833. — ISBN 9780738440835.
Бергер А.В подлиннике // Microsoft SQL Server 2005 Analysis Services. OLAP и многомерный анализ данных.. — БХВ-Петербург, 2007. — С. 928. — ISBN 978-5-94157-158-1.
Chuck Ballard, Daniel M. Farrell, Amit Gupta, Carlos Mazuela, Stanislav Vohnik. Dimensional Modeling: In a Business Intelligence Environment. — IBM Redbooks, 2012. — 664 с. — ISBN 0738496448. — ISBN 9780738496443.
SAS Institute. SAS Data Integration Studio 4.3: User's Guide. — SAS Institute, 2011. — 716 с. — ISBN 1607649098. — ISBN 9781607649090.