2009-04-22 4 views
2

У меня есть компонент сценария SSIS, который берет строки из ввода.Компонент скрипта SSIS Хранить все строки

Одна из строк на входе является логическое значение, определяет, если строка имеет тип A или B.

Как получить скрипт для загрузки всех входных строк в правильную коллекцию строк.

Также любые руководства о том, как использовать коллекции строк, а затем выводить их, также будут отличными.

ответ

1

Вы можете быть в состоянии использовать что-то вроде того, что сделал Джейми Томсон в своем блоге здесь:

http://consultingblogs.emc.com/jamiethomson/archive/2005/09/05/SSIS-Nugget_3A00_-Multiple-outputs-from-a-synchronous-script-transform.aspx

Он использует компонент сценария и разбивает вывод на несколько выходных потоков в зависимости от условий. Он очень кратко объясняет в своем посте, как настроить компонент и как отправить правильные строки в соответствующий выходной поток. Надеюсь, это то, что вы искали.

0

Поскольку компонент сценария с использованием VB, это будет что-то вроде

If Column(type) = True Then 
    CollectionA.Add(row) 
Else 
    CollectionB.Add(row) 
End If 

Однако, вы можете посмотреть в использовании DataTable, так как она более точно отображает то, что вы пытаетесь сохранить.

Существует событие, которое вы можете связать с тем, что выполняется, когда все строки прошли через компонент. Когда это событие выполняется, вы можете переместить данные из DataTables в некоторые переменные, которые существуют в потоке данных. Если вы введете эти переменные в виде значений таблицы, я считаю, что вы можете работать с этими переменными в потоке данных.

Лучше всего поставить всю эту операцию в отдельный компонент DataFlow в вашем потоке управления, поскольку это звучит так, как будто вы можете изменить количество строк, выходящих из игры, и лучше всего использовать несколько DataFlow компоненты.

+0

Что мне нужно сделать, это, возможно, я пытаюсь решить проблему не так ... У меня есть две идентичные таблицы для связи и одна для вызовов. Я хочу две коллекции по одному для каждой таблицы. Затем вы проходите через таблицу вызовов и для каждой строки видите, можете ли вы найти комм с той же датой. Если вы можете скопировать комм в результат, если вы не можете использовать этот вызов. Вы никогда не должны повторно использовать один и тот же комм. –

+0

Лично я бы просто сделал обычное соединение. Не LookUp, а прямое соединение. Я предполагаю, что вы не хотите детализации до времени, но только в тот день, и в этом случае вы можете сделать объединение, преобразовывая два поля DateTime в поля VarChar (10) (сокращая время) и присоединяясь к преобразованным поля. Это, вероятно, приведет к множеству совпадений, но похоже, что это должно дать вам то, что вы ищете. – CodeMonkey1313

+0

Я не хочу, чтобы многие из многих соответствовали этой проблеме. Я хочу удалить вызовы, если я смогу найти сообщение в тот же день, чтобы заменить его. Но я никогда не должен использовать одно и то же сообщение для замены двух отдельных вызовов –