Население SSIS медленно меняющегося измерения с выносной опорой

При работе с хранилищем данных подходящей аналогией проблемы является то, что у нас есть практикующие врачи. Практикующие медицинские работники обладают рядом профессиональных качеств и работают в открытом количестве команд и в открытом количестве клинических областей.

Например, у вас может быть медсестра, которая работает в детских службах в нескольких командах в качестве помощника/подрядчика/сотрудника банка. Или у вас может быть только что получивший квалификацию врач общей медицины, который отбывает срок в специальной области, ожидая получения квалификации консультанта в этой специальной области.

Таким образом, у нас есть открытое количество областей работы и открытое количество команд, мы не можем иметь команду 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 и два аутригера.

Может ли кто-нибудь указать мне на лучшую практику для этого? ИЛИ предложить альтернативный способ моделирования этого измерения?


person THEMike    schedule 04.11.2010    source источник


Ответы (2)


Признаться, я могу не все здесь понять, но мне кажется, что соотношение в этом примере должно быть обратным. Поместите TeamKey и WorkAreaKey в dimHealthProfessionals — это упростит задачу.

Имея это на месте, вы просто должны поставить аутригеры до dimHealthProfessionals.

Считайте аутригеры самостоятельными размерами. Вы можете рассматривать dimHealthProfessionals как измерение типа 2, чтобы правильно фиксировать историю.

ИЗМЕНИТЬ

Учитывая, что команда к человеку - это многие ко многим, факт более уместен. Столбец в таблице измерений подходит только в том случае, если человек может одновременно принадлежать только к одной команде. То же и с рабочими зонами.

введите здесь описание изображения

person Damir Sudarevic    schedule 05.11.2010

Проблема заключается в том, как пробежаться по всем трем наборам данных, чтобы определить, изменил ли HP атрибут, и если они изменили атрибут, как мы соответствующим образом обновим DIM и два аутригера.

Может ли кто-нибудь указать мне на лучшую практику для этого? ИЛИ предложить альтернативный способ моделирования этого измерения?

Я не уверен, что полностью понимаю ваш вопрос. Если вы не уверены в обнаружении изменений, используйте контрольные суммы в пакете. Создайте временную таблицу с данными, как они есть в источнике, затем сравните каждую строку с ее аналогом (соединенным с помощью бизнес-ключей), вычислив контрольную сумму для обеих строк и сравнив их. Если они отличаются, данные изменились.

Если вы говорите о каскадных обновлениях в иерархии исторических измерений (и вы можете рассматривать аутригеры как иерархию в этом контексте), то поиск по внешнему ключу будет автоматически искать более новую запись в DimHealthProfessionals, если у вас есть историзация (т.е. временные метки в DimHealthProfessionals). Эти разные внешние ключи приводят к разным контрольным суммам.

person cmenke    schedule 04.07.2012