Feitentabellen laden

Voltooid

Normaal gesproken laadt een normale datawarehouse-belastingsbewerking feitentabellen na dimensietabellen. Deze aanpak zorgt ervoor dat de dimensies waaraan de feiten gerelateerd zijn, al aanwezig zijn in het datawarehouse.

De gefaseerde feitengegevens bevatten meestal de zakelijke (alternatieve) sleutels voor de gerelateerde dimensies, dus uw logica voor het laden van de gegevens moet de bijbehorende surrogaatsleutels opzoeken. Wanneer het datawarehouse langzaam verandert, moet de juiste versie van de dimensierecord worden geïdentificeerd om ervoor te zorgen dat de juiste surrogaatsleutel wordt gebruikt om de gebeurtenis die in de feitentabel is vastgelegd, te vergelijken met de status van de dimensie op het moment dat het feit heeft plaatsgevonden.

In veel gevallen kunt u de meest recente 'huidige' versie van de dimensie ophalen; Maar in sommige gevallen moet u mogelijk de juiste dimensierecord vinden op basis van Datum/tijd-kolommen die de geldigheidsperiode aangeven voor elke versie van de dimensie.

In het volgende voorbeeld wordt ervan uitgegaan dat de dimensierecords een incrementele surrogaatsleutel hebben en dat de laatst toegevoegde versie van een specifiek dimensie-exemplaar (die de hoogste sleutelwaarde heeft) moet worden gebruikt.

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