Laden von Faktentabellen

Abgeschlossen

Üblicherweise werden bei einem regulären Data Warehouse-Ladevorgang Faktentabellen nach Dimensionstabellen geladen. Mit diesem Ansatz wird sichergestellt, dass die Dimensionen, auf die sich die Fakten beziehen, bereits im Data Warehouse vorhanden sind.

Die gestageten Faktendaten enthalten in der Regel die Geschäftsschlüssel (alternativen Schlüssel) für die zugehörigen Dimensionen, sodass Ihre Logik zum Laden der Daten die entsprechenden Ersatzschlüssel nachschlagen muss. Wenn sich die Dimensionen im Data Warehouse langsam ändern, muss die geeignete Version des Dimensionsdatensatzes identifiziert werden, um sicherzustellen, dass der richtige Ersatzschlüssel verwendet wird und das in der Faktentabelle aufgezeichnete Ereignis mit dem Zustand der Dimension zum Zeitpunkt des Auftretens der Fakten übereinstimmt.

In vielen Fällen können Sie die letzte „aktuelle“ Version der Dimension abrufen. In einigen Fällen müssen Sie jedoch den richtigen Dimensionsdatensatz anhand von DateTime-Spalten ermitteln, die den Gültigkeitszeitraum für jede Version der Dimension angeben.

Im folgenden Beispiel wird davon ausgegangen, dass die Dimensionsdatensätze einen inkrementellen Ersatzschlüssel umfassen und dass die zuletzt hinzugefügte Version einer bestimmten Dimensionsinstanz (mit dem höchsten Schlüsselwert) verwendet werden soll.

INSERT INTO dbo.FactSales
SELECT  (SELECT MAX(DateKey)
         FROM dbo.DimDate
         WHERE FullDateAlternateKey = stg.OrderDate) AS OrderDateKey,
        (SELECT MAX(CustomerKey)
         FROM dbo.DimCustomer
         WHERE CustomerAlternateKey = stg.CustNo) AS CustomerKey,
        (SELECT MAX(ProductKey)
         FROM dbo.DimProduct
         WHERE ProductAlternateKey = stg.ProductID) AS ProductKey,
        (SELECT MAX(StoreKey)
         FROM dbo.DimStore
         WHERE StoreAlternateKey = stg.StoreID) AS StoreKey,
        OrderNumber,
        OrderLineItem,
        OrderQuantity,
        UnitPrice,
        Discount,
        Tax,
        SalesAmount
FROM dbo.StageSales AS stg