Медленно меняющееся измерение

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Медленно меняющиеся измерения (от англ. 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].

Примечания[править | править код]

  1. Rainardi, 2007, pp. 11.
  2. Сафрончик, 2015, pp. 38—39.
  3. 1 2 Beryoza, 2015, pp. 179.
  4. Kimball, 2002, pp. 97—100.
  5. Ross, 2013, pp. 179.
  6. Бергер, 2007, pp. 367—368.
  7. Haselden, 2006, pp. 511.
  8. Ballard, 2012, pp. 159—160.
  9. 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.

См. также[править | править код]