事实表的 FK 问题

K09*_*K09 0 data-warehouse database-design facttable star-schema

我有一个 Datawarehouse 星型架构。一张 Dim 表是“DimTweet”。这包含推文详细信息。

对于选定的日期,我希望能够显示推文的数量。

但是,我目前的设计有问题。对于 DimTweet tbl 中的多行,如何在 Fact tbl 中使用一个 TweetID 作为 FK?

代码:

INSERT INTO [CarDW].[dbo].[FactCarDetail]
           ([CarID]
           ,[RegionID]
           ,[DateID]
           ,[TweetID]
           ,[SharePrice]
           ,[ShareQty]
           ,[SalesQty]
           ,[TweetCountPositive]
           ,[TweetCountNegative])
SELECT
    c.CarID,
    r.RegionID,
    d.DateKey,
    -- ????? AS TweetID
    scsp.Price,
    scsp.Quantity,
    scs.Quantity,
    -- COUNT NO. OF TWEETS Postive
    -- COUNT NO. OF TWEETS Negative
FROM 
    dbo.DimCar c        
INNER JOIN  
    dbo.StagingCarSale scs
    ON scs.CarModel = c.Model
INNER JOIN
    dbo.DimRegion r
    ON r.Region = scs.Region
INNER JOIN
    dbo.DimDate d
    ON d.Date = scs.SaleDate
--INNER JOIN
--  dbo.DimTweet t
--  ON t.
INNER JOIN  
    dbo.StagingCarSharePrice scsp
    ON scs.CarModel = scsp.CarModel
        AND scs.SaleDate = scsp.PriceDate
Run Code Online (Sandbox Code Playgroud)

数据仓库设计

更新:添加了单独的 Twitter Schema 这种设计可行吗?

在此处输入图片说明

小智 5

我将推文视为正在发生的事件,因此我将其建模为新的事实表 FactTweet。更具体地说,作为一个不真实的事实。FactTweet 的维度将是 DimDate、DimCar(如果您可以将推文与汽车相关联)、DimAuthor 和我可能会将 URL 和 Description 保留为退化维度。您也可以添加推文的情绪(正面、负面或中性)。

DimCar 和 DimDate 将是 FactTweet 和 FactCarDetail 的 一致维度,因此您将能够在单个查询中报告这两个事实。