加载事实数据表

已完成

通常,常规数据仓库加载操作会在加载维度表后加载事实数据表。 此方法可确保与事实相关的维度已存在于数据仓库中。

临时事实数据通常包括相关维度的业务(备用)键,因此加载数据的逻辑必须查找相应的代理键。 对于数据仓库渐变维度,必须识别相应的维度记录版本,确保使用正确的代理键将事实数据表中记录的事件与发生事实时维度的状态相匹配。

在许多情况下,可以检索维度的最新“当前”版本;但在某些情况下,可能需要根据指示每个维度版本的有效期的日期/时间列查找正确的维度记录。

以下示例假定维度记录具有递增的代理键,并且应使用特定维度实例的最新添加版本(将具有最高键值)。

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