加载事实数据表

已完成

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

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

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

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

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