При работе с хранилищем данных подходящей аналогией проблемы является то, что у нас есть практикующие врачи. Практикующие медицинские работники обладают рядом профессиональных качеств и работают в открытом количестве команд и в открытом количестве клинических областей.
Например, у вас может быть медсестра, которая работает в детских службах в нескольких командах в качестве помощника/подрядчика/сотрудника банка. Или у вас может быть только что получивший квалификацию врач общей медицины, который отбывает срок в специальной области, ожидая получения квалификации консультанта в этой специальной области.
Таким образом, у нас есть открытое количество областей работы и открытое количество команд, мы не можем иметь команду 1, команду 2 и т. д. в наших измерениях. Другие атрибуты также могут меняться со временем, например, базовое местоположение (где они работают), основная команда и область, в которой они работают.
Итак, вслед за Кимблом я выбрал аутригеры:
Таблица DimHealthProfessionals:
Key (primary key, identity)
Name
Main Team
Main Area of Work
Base Location
Other Attribute 1
Other Attribute 2
Start Date
End Date
Table OutriggerHealthProfessionalTeam:
HPKey (foreign key to DimHealthPRofessionals.Key)
Team Name
Team Type
Other Team Attribute 1
Other Team Attribute 2
Table OutriggerHealthProfessionalОбласть работы:
HPKey (as above)
Area of Work
Other AoW attribute 1
Если какой-либо атрибут HP изменится или изменится комбинация команд или областей работы, в которых они работают, нам нужно создать новую запись в SCD и ее таблицах аутригеров, чтобы инкапсулировать это.
И мы делаем это в SSIS.
Исходные данные в основном представляют собой таблицу HP с основными атрибутами, таблицу областей работы, таблицу команд и пару таблиц сопоставления для сопоставления текущего набора областей работы с HP.
У меня есть три источника данных, один приносит информацию о HCP, один — области работы всех HCP и один — членство в команде.
Проблема заключается в том, как пробежаться по всем трем наборам данных, чтобы определить, изменил ли HP атрибут, и если они изменили атрибут, как мы соответствующим образом обновим DIM и два аутригера.
Может ли кто-нибудь указать мне на лучшую практику для этого? ИЛИ предложить альтернативный способ моделирования этого измерения?