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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Медленно меняющиеся измерения»)
Перейти к навигации Перейти к поиску

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

Литература[править | править код]

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