Таблица фактов загрузки + Lookup / UnionAll для поиска SK - PullRequest
0 голосов
/ 29 апреля 2010

Я заполнил FactTable 12 поисками в таблице измерений, чтобы получить SK, из которых 6 относятся к разным таблицам Dim, а остальные 6 - к тому же DimTable (тип II), выполняющему поиск по тому же естественному ключу.

Ex:

PrimeObjectID => поиск DimObject.ObjectID => получить ObjectSK

и получил другие столбцы, которые делают то же самое

OtherObjectID1 => поиск DimObject.ObjectID => получить ObjectSK

OtherObjectID2 => поиск DimObject.ObjectID => get ObjectSK

OtherObjectID3 => поиск DimObject.ObjectID => get ObjectSK

OtherObjectID4 => поиск DimObject.ObjectID => get ObjectSK

OtherObjectID5 => поиск DimObject.ObjectID => get ObjectSK

для такого множественного поиска, как должно идти в моем пакете служб SSIS.

на данный момент я использую lookup / unionall foreach lookup. Есть ли лучший способ для этого.

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

Я предполагаю, что вы выполняете поиск, с ошибками, перенаправленными в производный столбец, чтобы установить значения по умолчанию для неудачных поисков, после чего следует объединение всех для каждого из значений поиска / производных столбцов. Этот шаблон довольно распространен, и я использую его на ранних стадиях, чтобы помочь в отладке. Однако, поскольку Union All является частично блокирующим компонентом (т. Е. Union All создает новый буфер при выполнении, но затем пропускает данные, как только он поступает) в SSIS, это снизит общую эффективность вашего пакета из-за накладные расходы на создание новых буферов в потоке данных. Обычно я кодирую серию поисков, чтобы игнорировать ошибки, а затем, после последней, я включаю производный компонент столбца, который выполняет замену по умолчанию для всех столбцов, которые включены в качестве целей поиска. Это обеспечивает наиболее эффективный поток данных через ваш поток данных. Для получения дополнительной информации о том, какие компоненты потока данных блокируют или полублокируют, см. Этот пост: http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx

0 голосов
/ 29 апреля 2010

Я не понимаю, почему вы делаете 2 поиска на измерение.

Обычно мы сначала обрабатывали все измерения (используя компонент TableDifference для вывода / истечения срока действия измерений).

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

...