Получение нескольких записей в SSIS

Мы работаем над процессом ETL. Процесс требует, чтобы мы взяли идентификатор из источника (Oracle) и запросили другой источник данных (MS SQL DB). Запрос должен получить два набора данных

  1. Customer details - one to one mapping get all the accounts of the
    1. customer accounts by the relationship id -multiple records for the same id

В настоящее время мы используем компонент поиска и получаем только первое совпадение для учетной записи клиента. Как мы можем получить несколько совпадающих записей - т.е. все совпадающие учетные записи клиентов. Поскольку оба источника данных различны, мы не можем выполнить внутреннее соединение. Другой альтернативой, которую мы могли придумать, было использование промежуточной таблицы, но мы хотели этого избежать. Есть ли другой способ использовать компонент SSIS для получения нескольких совпадающих записей для одного и того же идентификатора.


person Gayathri Rao    schedule 19.07.2013    source источник
comment
Что вы хотите сделать с данными позже? Добавить данные как производный столбец и сохранить их в какой-либо другой таблице? Не забывайте использовать несколько источников данных с правильными SQL-запросами и Union All объединять их вместе.   -  person makciook    schedule 19.07.2013
comment
Получив его, нам нужно вставить его в пункт назначения. Записи из сопоставления 1-1 отличаются от записей из 1-многие. Один - это данные о клиенте, а другой - счета клиентов. Я не уверен, сможем ли мы сделать Union all.   -  person Gayathri Rao    schedule 19.07.2013


Ответы (1)


Как вы уже определили, компонент поиска - это синхронный элемент. Через него протекает один ряд, а выходит только один ряд. Поиск и добавление данных в существующую строку, но не может добавить новую строку в поток.

Побывав на вашем месте, за исключением того, что я работал с DB2, я остановился на Асинхронный скрипт. Я бы передал идентификатор компоненту в режиме ReadOnly и определил свой новый вывод и все столбцы, которые будет генерировать задача. Да, это утомительно.

Внутри моего скрипта, в моем PreExecute, я установил соединение с моим источником данных, а затем в своем скрипте я запустил одноэлементные запросы к моей базе данных, чтобы получить все связанные учетные записи. Я сделал две вещи с возвращенными данными. Я вызвал метод AddRow и заполнил поля - данные отправляются вниз по потоку. Я также хранил локальную копию в памяти, так как у меня мог быть один и тот же идентификатор несколько раз за один прогон (человек купил финансовый продукт A и в той же партии они также купили продукт B). Это избавило бы меня от поездки в базу данных. Вы лучше понимаете свои данные и помогаете ли они.

person billinkc    schedule 19.07.2013