Медленно меняющееся измерение
Медленно меняющиеся измерения (от англ. Slowly Changing Dimensions, SCD) — механизм отслеживания изменений в данных измерения в терминах хранилища данных[1][2]. Применяется в случае, если данные меняются не очень часто и не по расписанию. Примером могут служить географические данные (местонахождение склада, юридический адрес организации), статус заказчика по программе лояльности или отдел компании, в котором работает её сотрудник[3].
Выделяют несколько типов SCD[4].
Тип 0
Нулевой тип (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], и нужен бизнесу для ситуаций, когда необходимо отслеживать изменения только по конкретным параметрам.
Пример[8]:
ID записи | Табельный номер | ФИО | Должность | Отдел |
---|---|---|---|---|
1026 | ИБ-69420 | Иванов Сергей Петрович | Младший специалист | Отдел оптовых закупок |
ID записи | Табельный номер | ФИО | Прежняя должность | Текущая должность | Прежний отдел | Отдел | Дата вступления в силу |
---|---|---|---|---|---|---|---|
1026 | ИБ-69420 | Иванов Сергей Петрович | Младший специалист | Главный специалист | Отдел оптовых закупок | Отдел продаж | 2000-01-01T00:00:00 |
Третий тип сохраняет лишь ограниченную историчность (с точностью только до предыдущего значения), что делает его менее содержательным по сравнению с типом 2[9].
Примечания
- Rainardi, 2007, pp. 11.
- Сафрончик, 2015, pp. 38—39.
- Beryoza, 2015, pp. 179.
- Kimball, 2002, pp. 97—100.
- Ross, 2013, pp. 179.
- Бергер, 2007, pp. 367—368.
- Haselden, 2006, pp. 511.
- Ballard, 2012, pp. 159—160.
- SAS Institute, 2011, pp. 461.
Литература
- Vincent Rainardi. Building a Data Warehouse: With Examples in SQL Server. — Apress, 2007. — 523 с. — ISBN 1590599314. — ISBN 9781590599310.
- Сафрончик М. И. Ч.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.
- Ralph Kimball, Margy Ross. The Data Warehouse Toolkit. The Complete Guide to Dimensional Modeling. — Wiley Computer Publishing, 2002. — 421 с. — ISBN 0-471-20024-7.
- Margy Ross. Design Tip #152 Slowly Changing Dimension Types 0, 4, 5, 6 and 7 // Kimball Group. — 2013.
- Бергер А. В подлиннике // Microsoft SQL Server 2005 Analysis Services. OLAP и многомерный анализ данных.. — БХВ-Петербург, 2007. — С. 928. — ISBN 978-5-94157-158-1.
- Haselden, Kirk. Microsoft SQL Server 2005 Integration Services. — Sams Publishing, 2006. — 888 с. — ISBN 0768689988. — ISBN 9780768689983.
- 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.