Компонент Lookup может быть болью для больших таблиц. Вы можете попробовать несколько вариантов.
Во-первых, используйте оператор SQL, который присоединяет таблицу поиска к исходным данным. Для этого потребуется несколько задач потока данных. Ваш существующий поток данных будет выводиться в таблицу промежуточного назначения в базе данных. Затем вы можете создать новый поток данных, где источником является запрос, который объединяет вашу таблицу поиска один раз для каждого поиска в промежуточную таблицу. Примером запроса может быть:
SELECT lt1.detailsID1, lt2.detailsID2, <other StagingTable columns>
FROM StagingTable st
LEFT OUTER JOIN LookupTable lt1 ON st.ID1 = lt1.ID1
LEFT OUTER JOIN LookupTable lt2 ON st.ID2 = lt2.ID2
Результаты поиска завершены как часть SQL-запроса.
Другой вариант - выполнить процесс соединения с использованием компонентов потока данных. Обратите внимание, что на этом компьютере будет много памяти на компьютере, на котором запущен пакет SSIS.
Используя текущий поток данных, добавьте новый источник, который получает данные из таблицы поиска. Добавьте компонент Multicast в поток данных и создайте путь потока данных от источника к входу Multicast.
Добавить компонент объединения Merge и добавить выход из первичного источника в качестве левого ввода и добавить первый многоадресный выход в качестве правого входа. Обратите внимание, что входы уже должны быть отсортированы в последовательности ключа соединения (ID1 для первого соединения и ID2 для второго соединения - см. Ниже). Настройте объединение Merge Join как левое внешнее соединение с совпадением столбцов ID1. Включите столбец DetailID1 на выходе
Добавить компонент «Сортировка» и второй слияние. Результат первого объединения Merge переходит к компоненту Sort. Установите ключ сортировки в столбец ID2. Выход Sort переходит ко второму компоненту Merge Join в качестве входа Left join. Второй выход Multicast поступает на второй вход Merge Join. Сконфигурируйте второе объединение Присоединить то же самое, что и первый Merge Join, но для столбца ID2.
Как вы можете видеть, этот процесс намного больше работы. Первое решение, вероятно, будет вашим лучшим решением, но вы должны сравнить решения для лучшей производительности.
Если вы близки к обновлению до 2008 года, но еще нет веских аргументов - вот и все. У SSIS 2008 есть «преобразование кеша», которое позволит вам это сделать. Вы заполняете кеш вручную, а затем можете использовать этот кеш несколько раз. –
Это звучит здорово, но, к сожалению, нам еще предстоит пройти долгий путь, пока не дойдем до 2008 года. – Diana