Ich habe einen Datenfluss, um Daten von einer alten Datenbank in eine neue zu migrieren. Das alte Design hatte alle Daten und historischen Informationen (Änderungen) in einer einzigen Tabelle mit einer "Version" (inkrementierende Ganzzahl) für die Zeile gespeichert.
Das neue Design verfügt über zwei Tabellen, eine für den "aktuellen" Status der Daten und eine Audit- (oder Verlaufs-) Tabelle, in der Änderungen mithilfe eines Triggers aufgezeichnet werden. Daher existiert nur eine Zeile für die "aktuellen" Daten und es gibt viele Verlaufszeilen.
In meinem SSIS-Paket verwende ich die folgenden Komponenten, um die aktuellen Daten in eine Tabelle zu kopieren, aber dann alle Daten an die Prüftabelle zu senden.
Der Multicast wird verwendet, um den Datenstrom aufzuteilen, und die bedingte Aufteilung identifiziert die "aktuelle" Zeile und sendet diese an die Order-Tabelle (die Tabelle heißt eigentlich nicht Order , bevor jemand Kommentare zur Verwendung eines reservierten Wortes für einen Tabellennamen abgibt).
Ich habe diesen Ablauf erstellt, weil ich keine Möglichkeit gefunden habe, mithilfe der bedingten Aufteilung alle Daten an das Überwachungsziel und nur die aktuelle Zeile an die andere zu senden .
Ich gehe davon aus, dass das Erstellen aller doppelten Daten und das anschließende Verwerfen in ein Papierkorbziel nicht sehr effizient ist. Da ich ungefähr 52 Millionen Zeilen migrieren muss, mache ich mir Sorgen, dass die Umwandlung Tage dauern wird.
Gibt es einen besseren (effizienteren) Weg, um die Datenaufteilung zu erreichen?
Hinweis zu Daten: Ich habe ein row_number()
auf die Daten angewendet, mit dem ich die "aktuelle" Zeile als Nummer 1 identifizieren kann. Alle Zeilen einschließlich "aktuell" müssen zum Ziel der Prüftabelle gehen.
BEARBEITEN: Ich habe eine Alternative zu Multicast und Conditional Split gefunden, die in diesem Blogbeitrag von SSIS Junkie vorgeschlagen wird: Mehrere Ausgaben einer synchronen Skripttransformation
Es verwendet eine Skriptkomponente, um Daten an eine oder mehrere Ausgaben zu senden. Ich versuche diese Methode, um festzustellen, ob sie schneller ist, aber nachdem ich Kenneths Antwort und Vorschlag zum Entfernen des Papierkorbziels gesehen habe, bin ich mir nicht sicher, ob dies der Fall sein wird.