Я бы предположил, что мы сначала введем все измерения.И когда данные факта передаются через поиск, который «проталкивает» внешний ключ в таблицу фактов?В какой момент это сделано?В рамках 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):
- Извлечение значений FACT и DIMENSION из обрабатываемого вами набора данных.
- Создайте уникальный номер на основе значения DIMENSION (который, скажем, является строкой), используя воспроизводимый алгоритм (например, SHA1, если задана одна и та же строка, он всегда дает один и тот же номер).
- Вставьте в таблицу FACT1 номер иЗначения FACT.
- Вставьте в таблицу DIMENSION1 число и значения DIMENSION.
Шаги 3 и 4 можно выполнять параллельно. до тех пор, пока нет никаких ограничений.Объединение в числовом столбце было бы более эффективным, чем в строке.
И нет необходимости хранить отображение для # 2, потому что оно воспроизводимо (просто убедитесь, что вы выбрали правильный алгоритм).Очевидно, что это может быть расширено для схемы снежинки и / или нескольких измерений.
HTH