2012-11-07 2 views
5

Innerhalb eines Datenflusses ist es möglich, eine Suche durchzuführen, die nicht übereinstimmenden Zeilen einzufügen, erneut zu suchen und dann mit dem vollständigen (ursprünglichen) Datensatz fortzufahren?Wie führe ich den Prozess nach dem Einfügen nicht übereinstimmender Nachschlagezeilen in eine Tabelle fort?

Ich kann nicht sehen, wie Sie bekommen/Wiederverwendung der eingefügten Zeilen, nachdem sie zu einem OLE DB Destination gegangen sind, noch kann ich sehen, dass ein Multicast bis ein Nachschlag Einsatz Zweig abgeschlossen ist warten konnte (und dann alle Vereinigung sie zurück -im).

Wenn es nicht innerhalb des Datenflusses getan werden kann, müsste ich meine gesamte Filterlogik in einem vorherigen Datenfluss-Task einfach wiederholen, um zuerst die Sucheinfügungen durchzuführen?

Dies könnte eine offensichtliche/bereits beantwortete Frage sein, aber ich kann nicht viel nach der Suche finden.

+0

Ich verstehe nicht. Sie haben die Daten der ersten Abfrage, Sie haben auch die Daten, die Sie einfügen möchten. Warum kombinierst du sie nicht und benutzt sie einzeln? Multicast die Einfügedaten zum OLEDB-Ziel und zu einem Union-Ziel. Senden Sie die Originaldaten an diese Union (und senden Sie sie an anderer Stelle per Multicast). Jetzt haben Sie den gesamten Datensatz. –

+0

Müsste ich nicht warten, bis die Einfügung abgeschlossen ist, damit ich die Suche erneut ausführen und dann den normalen Pfad fortsetzen kann? – PeterX

Antwort

3

Dies ist in einem einzelnen Datenfluss nicht möglich. Es gibt verschiedene "Lösungen", wenn Sie genug googlen, aber sie übersehen die architektonische Realität, dass Zeilen einen Datenfluss in Puffern/Batches durchlaufen, die parallel verarbeitet werden.

So Bild Sie haben mehrere "neue" Zeilen ankommen in 2 benachbarten Puffern. Es gibt keine Möglichkeit sicherzustellen, dass Ihre Downstream-Behandlung von "neuen" Zeilen aus Puffer 1 abgeschlossen wurde, bevor Puffer 2 Ihre Upstream-Suche durchführt. Dies führt dazu, dass mehrere "neue" Zeilen in die Zieltabelle für denselben Schlüssel eingefügt werden.

Sie benötigen eine vorgelagerte Datenflusstask, die alle erforderlichen Sucheinfügungen ausführt. Dies ist insgesamt eine effizientere Lösung zur Laufzeit, da Ihre Nachschlagetabellen Fast Load und Table Lock verwenden können und Ihre Downstream-Suche Full Cache sein kann.

+0

Danke. Vielleicht muss sich die Frage jetzt auf "wie verwende ich die gleiche Logik vor der Suche" sowohl im Upstream-Datenfluss als auch im Downstream-Datenfluss konzentrieren. Vielleicht ein wiederverwendbares Paket, das die gleichen Schritte ausführt, aber ich kann damit noch keinen funktionierenden Pfad sehen. – PeterX

+0

Ja "die Logik wiederverwenden" wäre nett, aber realistisch - das ist SSIS. Vielleicht könnten Sie SQL-Code in Variablen verschieben und Lookups zu einem vorhergehenden Datenfluss-Task verschieben, der Lookup-Caches erstellt, aber wahrscheinlich handelt es sich um eine Wiederverwendung. –

Verwandte Themen