【发布时间】:2011-04-29 01:42:18
【问题描述】:
我正在尝试为许可供应商设计一个数据仓库,该供应商在电子商务和其他各种场所销售许可。他们想要跟踪的是销售、产品生命周期和活动。这意味着存在不同的销售类型(例如新购买、促销购买、续订)和许可证的不同事件/状态,例如 - 可以安装、续订、激活、注册许可证。许可证可以多次续订(在不同的日期)。
所以我认为我的维度会非常简单 - 日期、产品、来源、销售类型和事件/状态。我会有两个事实表;一个用于销售,另一个用于事件,它们都具有维度表的外键。我的事实表将是一个累积事实表,其中每个事件都会添加一个新行 - 因此,可以重复许可证。但是,要求声明他们能够交叉引用这两个事实以及 saletype 和 event 维度。例如,如果有人看到产品“A”在美国电子商务商店的“新购买”类型有 100 次销售,那么他们想看看“那些”100 个许可证中有多少也被激活了......然后他们可能会想看看,在激活的人中,有多少人注册了……然后(回到 saletype)有多少人注册了,有多少人“更新了”。而且我不能真正定义层次结构,因为你可以有很多这些组合......
我该怎么做?在我阅读的过程中,我发现似乎没有办法根据许可证本身来关联这两个事实(这是我需要做的)。
另外,我还在想也许我可以有 1 个事实表,并且我可以“技术上”将 saletype 和 eventtype 组合成一个大的 eventtype 维度。因此,事实表中将是一个大的事务事实表,其中将具有事件维度的 eventid 外键。但是,所以现在我有一个事实表,其中包含发生在许可证上的每个事件的一行。许可证是重复的,一个事件可以为一个事件出现多次(在不同的日期)。那么,如果我选择查看某个活动的总数,我如何才能查看其中有多少许可证也适用于不同的活动?
我需要提供所有这些数字作为度量,以便业务用户可以即时查看它们(使用他们想要使用的任何 OLAP 浏览器)
注意:我使用的是 SQL server 分析服务和 SQL server 2008 r2
仅供参考,这就是我现在所拥有的:
- DimProducts(PK:ProductID 和其他属性)
- DimDate(PK:DateKey 和其他属性)
DimEvent(PK:EventID 和其他属性)
FactLicenses(FK: ProductID; FK: DateKey; FK: EventID, and License Field(varchar))
所以我有一个重复的许可证,每次许可证发生问题(安装、激活、续订、取消、续订(再次))时都会发生一个事件。可能有一个具有相同 eventID 的许可证,但从不在同一个DateKey,表的主键是DateKey + EventID + License
编辑:
所以,我在很多地方读到,在这种情况下的事实表应该是一个累积的事实表,它有多个指向相同(类型)维度(即日期)的列,我应该为每一个创造角色扮演维度。但是,您如何解释许可证可以多次续订以及可以多次安装等事实...?
【问题讨论】:
-
至少对我来说太复杂了。你能不能让它更短更简单......例如,包括你创建的表结构作为一个例子,以更好地理解你,然后提出一些例子来问你的问题。因为我目前也在做 BI。
-
缩短它会破坏目的 - 我想我已经展示了我需要详细建模的业务场景(我也已经说明了我的表结构)。
-
@MR:不,我的意思不是你的场景,你的解释:)
-
hmm - 哪个部分令人困惑?哪一部分应该解释的更清楚?
标签: ssas data-warehouse business-intelligence