Laden Faktentabelle + Lookup / UnionAll für SK-Lookups
-
02-10-2019 - |
Frage
habe ich FactTable mit 12 Lookups Dimensionstabelle zu füllen SK ist zu bekommen, davon 6 auf verschiedene Dim Tabellen und Rest 6-Lookup gleiche DimTable (Typ II) zu tun Lookup gleiche natürlichen Schlüssel.
Beispiel:
PrimeObjectID => Lookup DimObject.ObjectID => get ObjectSK
und bekommen andere Spalten, die tun gleiche
OtherObjectID1 => Lookup DimObject.ObjectID => get ObjectSK
OtherObjectID2 => Lookup DimObject.ObjectID => get ObjectSK
OtherObjectID3 => Lookup DimObject.ObjectID => get ObjectSK
OtherObjectID4 => Lookup DimObject.ObjectID => get ObjectSK
OtherObjectID5 => Lookup DimObject.ObjectID => get ObjectSK
für solche Mehrfach Lookup, wie in meinem SSIS-Paket gehen soll.
jetzt ist mit Lookup / UnionAll foreach-Lookup. Gibt es einen besseren Weg, um dies.
Lösung
Ich gehe davon aus, was Sie tun eine Lookup ist, mit umgeleiteten Fehler zu einer abgeleiteten Spalte Standardwerte für die gescheiterten Lookups, gefolgt von einer Vereinigung aller für jeden der Nachschlag / abgeleiteten Spaltenwerte. Dieses Muster ist ziemlich verbreitet und ich benutze es in frühen Stadien, um Hilfe zu debuggen. Doch alle da eine Vereinigung ist eine teilweise Blockierung Komponente (dh die Union All erstellt einen neuen Puffer, wenn er ausgeführt wird, aber dann übergibt Daten durch, sobald es darum geht, in) in SSIS dieser wird die Gesamteffizienz des Pakets aufgrund der Abnahme Overhead von neuen Puffer in Ihrem Datenfluss zu schaffen. Normalerweise werde ich die Serie von Lookups Code auf Fehler zu ignorieren und dann nach dem letzten, werde ich eine abgeleitete Spalte Komponente enthalten, die funktioniert ein für alle Spalten mit dem Standard ersetzen, die als Ziele von Lookups enthalten sind. Dies ermöglicht den effizienteste Datenfluss durch Ihren Datenfluss. Für weitere Informationen darüber, welche Datenkomponenten fließen blockieren oder halb blockieren diesen Beitrag sehen: http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx
Andere Tipps
Ich verstehe nicht, warum Sie tun, 2-Lookups pro Dimension.
Typischerweise verarbeitet wir alle Dimensionen erste (mit der Komponente TableDifference herzuleiten / laufen die Dimensionen).
Dann wurde die Faktentabelle geladen, auf jeder Dimension einen Nachschlag zu tun (in Serie), um die Geschäftsschlüssel mit dem Ersatzschlüssel zu finden.