ETL Процесс, когда и как добавить в иностранные ключи T-SQL SSIS - PullRequest
1 голос
/ 02 марта 2012

Я нахожусь на ранних стадиях создания хранилища данных, основанного на методологии Кимбалла.

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

Звучит как глупый вопрос, но как именно это делается?Есть ли хорошие статьи, которые проходят через этот процесс?

Я бы предположил, что мы сначала введем все измерения.И когда данные факта передаются через поиск, который «проталкивает» внешний ключ в таблицу фактов?В какой момент это сделано?В рамках SSIS что такое метод «наилучшей практики»?Например, все ли это делается в одном пакете?

Примерно так и происходит?

В этом случае мы должны быть особенно осторожны в том порядке, в котором мы загружаем наши данные, или мы можемзагружать факты, для которых нет соответствующего измерения?

1 Ответ

2 голосов
/ 10 марта 2012

Я бы предположил, что мы сначала введем все измерения.И когда данные факта передаются через поиск, который «проталкивает» внешний ключ в таблицу фактов?В какой момент это сделано?В рамках SSIS что такое метод «наилучшей практики»?Это все сделано в одном пакете, например?

Это будет зависеть от вашей схемы и дизайна таблицы.


Предполагая, что это схема * звезда иFK основан на самом значении данных:

DIM1 <- FACT1 -> DIM2
 ^
 |
FACT2 -> DIM3

вы сначала заполните DIM1 и DIM2 перед вставкой в ​​FACT1, поскольку вам потребуется FK.


Предполагая, что это схема снежинки :

DIM1_1
 ^
 |
DIM1 <- FACT1 -> DIM2

вы сначала заполните DIM1_1, затем DIM1 и DIM2 перед вставкой в ​​FACT1.


Предполагая, что отношение FK основано на чем-то другом (в основном число) вместо самого значения данных (своего рода оптимизация при работе с огромным количеством данных и / или строк в качестве значений измерения), вам не нужно ждать, пока вы вставите данные в таблицу DIM.Я уверен, что это очень сбивает с толку :), поэтому я постараюсь объяснить вкратце.Эти шаги будут выглядеть примерно так (предположим, простая схема типа «звезда» с 2 таблицами, FACT1 и DIMENSION1):

  1. Извлечение значений FACT и DIMENSION из обрабатываемого вами набора данных.
  2. Создайте уникальный номер на основе значения DIMENSION (который, скажем, является строкой), используя воспроизводимый алгоритм (например, SHA1, если задана одна и та же строка, он всегда дает один и тот же номер).
  3. Вставьте в таблицу FACT1 номер иЗначения FACT.
  4. Вставьте в таблицу DIMENSION1 число и значения DIMENSION.

Шаги 3 и 4 можно выполнять параллельно. до тех пор, пока нет никаких ограничений.Объединение в числовом столбце было бы более эффективным, чем в строке.

И нет необходимости хранить отображение для # 2, потому что оно воспроизводимо (просто убедитесь, что вы выбрали правильный алгоритм).Очевидно, что это может быть расширено для схемы снежинки и / или нескольких измерений.

HTH

...