在所有FK列的事实表中,FK的典型值是否相同?

时间:2012-07-23 17:52:23

标签: ssis ssas data-warehouse sql-server-2012

我是多维数据仓库的新手,并且一直在我的工作场所工作 为报告目的开发数据仓库解决方案,所以这可能是一个 愚蠢的问题,但在这里... ...

我的事实表中的每条记录都有FK列,这些列链接到各自的维度表(例如dimCustomer,dimGeography,dimProduct)。

在ETL过程中加载数据仓库时,我首先使用详细信息加载维度表,然后加载事实表并进行查找转换以查找要放入事实表的FK值。在这样做时,事实表中的每一行似乎都具有相同值的FK(例如,row1在每个列中的FK为1,row2的值为2 ......等等。)

我只是想知道这是否典型,或者我是否需要重新考虑仓库和ETL流程的设计。

任何建议都将不胜感激。

由于

1 个答案:

答案 0 :(得分:2)

根据您的评论,听起来您的ETL过程中错过了一步。

对于呼叫中心/联络中心,我可能会从这样的事实表开始:

CallFactID - unique key just for ETL purposes only
AssociateID - call center associate who initially took the call
ProductID - product that the user is calling about
CallTypeID - General, Complaint, Misc, etc
ClientID - company / individual that is calling
CallDateID - linked to your Date (by day) Dimension
CallTimeOfDayID - bucketed id for call time based on business rules
CallStartTimestamp - ANSI timestamp of start time
CallEndTimestamp - ANSI timestamp of end time
CallDurationTimestamp - INTERVAL data type, or integer in seconds, call duration

您的维度表将是:

AssociateDim
ProductDim
CallTypeDim
ClientDim
DateDim
TimeOfDayDim

您的ETL需要先建立尺寸。如果源系统中有关系模型,通常只需要在“查找”表中查找各种内容,例如“产品”表或“关联”表,并将任何有意义的关系归一化为非常规。属性。例如,关系产品表可能如下所示:

PRODUCTS: ProductKey, 
          ProductName, 
          ProductTypeKey, 
          ProductManufacturerKey, 
          SKU, 
          UPC

通过查找产品类型和制造商,您可以将其归一化为一般产品维度,最终得到以下内容:

PRODUCTDIM: PRODUCTID (DW surrogate key), 
            ProductKey, 
            ProductName, 
            ProductTypeDesc, 
            ManufacturerDesc,
            ManufacturerCountry,
            SKU,
            UPC

对于仅在您的事务(调用记录)表上但基数较低的属性,您可以通过在这些表上执行SELECT DISTINCT来创建维度。

一旦加载了所有维度,就可以通过基于自然键(在维度中保留的)对每个维度进行查找来加载事实,然后将该键分配给事实行

有关使用DW Star Schema的ETL的更详细指南,我强烈推荐Ralph Kimball的书The Data Warehouse ETL Toolkit