Аббревиатура SCD является ключевой в профессиональном жаргоне разработчика многомерных моделей. Многие из вас уже знают, что она означает slowly changing dimension (медленно изменяющееся измерение). Существует несколько хорошо описанных приёмов обработки атрибутов медленно изменяющихся измерений. Говоря коротко, при использовании приёма SCD1 значение атрибута заменяется на новое, уничтожая исторические значения атрибута. Например, когда изменяется упаковка определённого продукта, значение атрибута “упаковка” заменяется новым значением. Применение типа 2 предполагает вставку в таблицу измерения новой записи с новыми значениями атрибутов. Исторические записи таблицы фактов продолжают ссылаться на записи со старым ключом измерения и данными о старой упаковке, начиная с определённого момента, строки таблицы фактов будут ссылаться на записи с новым ключом и данными о новой упаковке, таким образом, идеально разделяя историю. Наконец, использование типа 3 предполагает, что к записи таблицы измерения добавляются новые атрибуты для поддержки одновременного хранения данных о двух типах упаковки - может быть, данных о текущей упаковке и о предыдущей или о текущей и самой первой.

Мой опыт свидетельствует о том, разработчиков хранилищ данных очень часто просят сохранить исторические атрибуты, при этом, оставляя возможность выполнять отчёты по историческим данным в разрезе текущих значений атрибутов. Ни один из стандартных приёмов SCD не позволяет достичь этого независимо. Однако, объединяя приёмы, вы можете элегантно предоставить эту возможность в ваших многомерных моделях.

Мы начнём с использования рабочей лошадки SCD, типа 2, для захвата изменений значений атрибутов. Когда изменится тип упаковки продукта, мы добавим в таблицу измерения новую запись с новым суррогатным ключом. Затем украсим таблицу измерения дополнительными атрибутами для отражения текущего типа упаковки. В наиболее свежей записи таблицы измерения для данного продукта значение атрибута “текущая упаковка” будет идентичным значению исторически точному атрибуту “как было”. Во всех предыдущих строках таблицы измерения значение атрибута “текущая упаковка” для данного продукта будет заменено на новое для отражения текущего состояния мира. Если мы желаем посмотреть на исторические факты с точки зрения текущей структуры упаковки, мы наложим фильтры или произведём группировку на основе текущих атрибутов. Если мы наложим фильтры или произведём группировку на основе атрибутов “как было”, мы увидим факты с точки зрения того, какова была упаковка в тот момент времени.

Мы описали гибридный приём, который комбинирует три фундаментальных приёма обработки медленно изменяющихся измерений. Мы создаём новые строки для захвата изменений (тип 2), добавляем атрибуты для отражения альтернативного взгляда на мир (тип 3), которые переписываются для всех предыдущих строк измерения для данного продукта (тип 1). Как недавно предложил один студент, может быть нам нужно назвать это типом 6 (2+3+1)…

Материал опубликован с разрешения компании Ralph Kimball Associates
Автор оригинала: Margy Ross
Перевод на русский язык: Константин Лисянский
Оригинальный документ располагается здесь


Для удобства отслеживания новых публикаций рекомендуем подписаться на рассылку или на канал RSS.

Читайте также: