2009-04-22 9 views
2

Ich habe eine SSIS-Skript-Komponente, die Zeilen aus der Eingabe übernimmt.SSIS-Skript-Komponente Alle Zeilen speichern

Eine der Zeilen auf dem Eingang ist ein boolean, die identifiziert, wenn die Zeilen vom Typ A oder B sind

Wie bekomme ich das Skript alle Eingabezeilen in die richtige Sammlung von Zeilen zu laden.

Auch alle Anleitungen zur Verwendung der Zeilensammlungen und deren Ausgabe wären ebenfalls großartig.

Antwort

1

können Sie in der Lage sein, etwas ähnliches zu verwenden, was Jamie Thomson hat in seinem Blog-Eintrag hier:

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

Er nutzt die Skriptkomponente und teilt die Ausgabe in mehrere Ausgangsströme in Abhängigkeit von Bedingungen. Er erklärt in seinem Beitrag sehr übersichtlich, wie man die Komponente konfiguriert und wie man die richtigen Zeilen an den richtigen Ausgabestrom sendet. Hoffe, das ist, was Sie gesucht haben.

0

Da das Script Komponente mit VB, wäre es so etwas wie

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

jedoch sein, Sie eine Datatable in Verwendung suchen möchten, wie es steht genau, was Sie zu speichern versuchen.

Es gibt ein Ereignis, mit dem Sie verknüpfen können, wenn alle Zeilen die Komponente durchlaufen haben. Wenn dieses Ereignis ausgeführt wird, können Sie die Daten aus den DataTables in einige Variablen verschieben, die im Datenfluss vorhanden sind. Wenn Sie diese Variablen als Tabellenwerte eingeben, glaube ich, dass Sie zehn mit diesen Variablen im Datenfluss arbeiten können.

Die beste Möglichkeit besteht darin, diese gesamte Operation in eine separate DataFlow-Komponente innerhalb Ihres Kontrollflusses einzufügen, da es sich so anhört, als ob Sie die Anzahl der Reihen ändern könnten. Am besten verwenden Sie mehrere DataFlow Komponenten.

+0

was ich tun muss, ist dies, vielleicht versuche ich das Problem auf die falsche Art zu lösen ... Ich habe zwei identische Tabellen für die Kommunikation und eine für Anrufe. Ich möchte zwei Sammlung eins für jede Tabelle. Dann gehen Sie durch die Ruftabelle und für jede Zeile sehen Sie, ob Sie eine Komm mit dem gleichen Datum finden können. Wenn Sie die Verbindung in das Ergebnis kopieren können, können Sie den Anruf nicht verwenden. Sie sollten niemals die gleiche Kommunikation wiederverwenden. –

+0

Persönlich würde ich dann einfach einen normalen Join machen. Kein LookUp, sondern ein geradliniger Join. Ich gehe davon aus, dass Sie Granularität nicht bis zu der Zeit, aber nur den Tag wollen, in dem Fall können Sie einen Beitritt tun, indem Sie die zwei DateTime-Felder in VarChar (10) -Felder (Abschneiden der Zeit) und Join auf der konvertierten konvertieren Felder. Dies wird wahrscheinlich zu vielen Übereinstimmungen führen, aber Sounds wie es sollte Ihnen geben, was Sie suchen. – CodeMonkey1313

+0

Ich will nicht die vielen zu viele passend that't das Problem. Ich möchte die Anrufe entfernen, wenn ich am selben Tag eine Kommunikation finden kann, um sie zu ersetzen. Aber ich sollte niemals dieselbe Kommunikation verwenden, um zwei separate Anrufe zu ersetzen –

Verwandte Themen