Можно ли использовать системную временную таблицу в дизайне DWH фактического измерения?
Скажем, я хочу реализовать таблицу измерений истории SCD type2 (или я должен сказать таблицу с атрибутами SCD type2) в системе DWH, которую я сейчас внедряю как "обычную таблицу" с natural key
+ primary surrogate key
+ datefrom
+ dateto
+ iscurrent
дополнительные столбцы.
где
primary surrogate key
необходим для использования его в качестве внешнего ключа во всех таблицах фактов иdatefrom
+dateto
+iscurrent
столбцы необходимы для отслеживания истории.
Теперь я хочу использовать временную таблицу с версией системы в проекте DWH для измерения фактов, но MSDN говорит, что:
Временная таблица должна иметь первичный ключ, определенный для корреляции записей между текущей таблицей и таблицей истории, а в таблице истории не может быть определен первичный ключ.
Похоже, я должен использовать вид с primary surrogate key
генерирование "на лету" или другой процесс ETL, но мне не нравятся обе идеи...
Может есть другой способ?
1 ответ
Вы будете использовать временную таблицу в постоянной области хранения вашего хранилища данных. Тогда вы можете просто применить изменения из исходных систем и не потерять какие-либо исторические версии.
Затем, когда вы запрашиваете или при построении интеллектуального интеллектуального хранилища данных, вы можете присоединить факты к текущей или исторической версии измерения. Обратите внимание, что вам не нужны суррогатные ключи для этого, но вы можете создавать их для упрощения и оптимизации запросов к многомерной модели. Вы можете создать суррогатный ключ с помощью выражения вроде
ROW_NUMBER () OVER (ORDER BY EmployeeID, ValidTo) AS EmployeeKey
И затем присоединение к таблице измерений при загрузке таблицы фактов, как обычно.
Но интересно то, что это может отложить ваше пространственное моделирование и выбор типов SCD, пока они вам действительно не понадобятся. А сокращение и отсрочка разработки и реализации витрины данных помогает быстрее обеспечить постепенный прогресс. Вы можете с уверенностью доставлять начальный набор отчетов, используя представления по вашей постоянной промежуточной области (или "озеру данных", если вы предпочитаете этот термин), в то время как ваше проектное мышление для витрин данных развивается.