Население SSIS медленно меняющегося размера с помощью аутригера - PullRequest
4 голосов
/ 04 ноября 2010

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

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

Таким образом, у нас есть открытое число областей работы и открытое числокоманд, мы не можем иметь команду 1, команду 2 и т. д. в наших измерениях.Другие атрибуты также могут со временем меняться, например, базовое местоположение (где они работают), основная команда и область, в которой они работают.

Итак, после Kimble я пошел на аутригеры:

Table 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 OutriggerHealthProfessionalAreaOfWork:

HPKey (as above)
Area of Work
Other AoW attribute 1

Если какой-либо атрибут HP изменяется, или их комбинациякоманды или области работы, в которых они работают, меняются, нам нужно создать новую запись в SCD и в ее таблицах аутригеров, чтобы инкапсулировать это.

И мы делаем это в SSIS.

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

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

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

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

Ответы [ 2 ]

1 голос
/ 04 июля 2012

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

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

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

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

1 голос
/ 05 ноября 2010

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

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

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

EDIT

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

enter image description here

...