Ich baue mein erstes Datawarehouse in SQL 2008 / SSIS und suche nach Best Practices für das Laden der Faktentabellen.
Derzeit habe ich in meiner DW etwa 20 Dimensionen (Büros, Mitarbeiter, Produkte, Kunden usw.), die vom Typ 1 SCD sind. In meiner dw-Struktur gibt es ein paar Dinge, die ich bereits angewendet habe:
In meinem Fakt, das SSIS-Projekt lädt, hat die gegenwärtige Methode, die ich für das Laden von Dimensionen habe, mehrfaches Nachschlagen (20+) zu jedem der DIMs, dann das Füllen der FACT-Tabelle mit den Daten.
Für meine Lookups setze ich:
Ist das der beste Ansatz? Bilder angehängt, um mit meiner Beschreibung oben zu helfen.
Sieht gut aus. Es gibt Optionen, wenn Sie mit Leistungsproblemen zu kämpfen haben, aber wenn diese stabil sind (das Datenladezeitfenster wird beendet, Quellsysteme werden nicht gelöscht usw.), sehe ich keinen Grund für eine Änderung.
>Einige mögliche Probleme, die man im Auge behalten sollte ...
Eine gängige Alternative (zu dem, was Sie oben haben) besteht darin, die Faktentabellendaten aus dem Quellsystem zu extrahieren und in einem Staging-Bereich zu landen, bevor Sie die Dimensionssuchvorgänge über eine einzige SQL-Anweisung durchführen. Einige behalten sogar eine Reihe von Dimensionsschlüsselzuordnungstabellen im Bereitstellungsbereich speziell für diesen Zweck bei. Dies reduziert das Sperren / Blockieren auf dem Quellsystem ... wenn Sie jede Menge Daten haben und das Quellsystem blockieren müssen, während Sie die Daten auslesen und durch diese 20+ Lookup-Transformationen laufen lassen.
Eine gute Staging-Area-Strategie wird wichtiger, wenn Sie über eine große Datenmenge, große Dimensionen, komplexe Key-Mappings (in der Regel aufgrund mehrerer Quellsysteme) und kurze Zeitfenster zum Laden von Daten verfügen.
Tags und Links sql sql-server ssis data-warehouse lookup