我开始为一家公司设计一个数据仓库。我们试图解决的第一个问题是关于他们的支持票务系统。我的初始架构如下

现在我们要问的问题之一是历史上任何时候都有多少票是有效的。
问题是票证将在某一天创建,但可能会在几天/几周/几个月内打开而不会更新或再次创建,这意味着即使票证每天都被打开,我们在创建票证时只有一个事实记录。
我不确定处理这个问题的最佳方法是什么,我想到的就是这个。
在一天开始时,任何尚未标记为已解决的票证都会在每天开始时将另一个票证输入到事实表中,无论是否有任何更新?这看起来是一个明智的解决方案吗?还是我错过了更简单的东西?
对架构的任何反馈也将不胜感激,因为我们仍然有时间更改它并从一开始就做好。
我有一个销售报告系统,其中包含这样的传入数据
date,editionID,outletId,Measure1,Measure2
2013-01-01,2,532,11,24
Run Code Online (Sandbox Code Playgroud)
等等...
我是设计数据立方体的新手(用于 pentaho BI 套件),当我构建模式时,一切正常,直到我想定义date为日期维度。pentaho 模式设计者需要将其作为对日期维度表的外键引用,以便将其用作维度。
我的问题是,为什么我需要一个单独的表?我将如何构建它?我将如何在事实表中引用它?
谢谢!
让我开始:我不是 DBA;我是后端开发人员。
有人建议,对于报告模式,我实现了一个星型模式,其中事实表在被归档之前可以有大约 2B 行。每天约 100 万行将添加到所述表中。报告中的信息不能超过 15 分钟过时,页面加载时间必须< 7s
要提供的报告将是一种“摘要和钻取”,其中在选择所选摘要部分时,将在另一个部分中显示构成的摘要的行的子集:

我倾向于转移到像 Cassandra 这样的 NoSQL 存储,因为我真的很关心一个事实表(可能还有属性表)延伸到 20 亿行。希望这里的某人可以阐明为此使用星型模式,以及我对 Oracle(或任何 RDBMS,就此而言)处理选择和加入具有 ~2B 记录的表的能力。
谢谢
我有一个 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 …Run Code Online (Sandbox Code Playgroud)