【发布时间】:2014-01-27 22:03:28
【问题描述】:
我有一个数据集市,它只需要获取产品的序列号、活动日期以及活动发生的地点(哪个帐户)。
有五种可能的活动。我遇到的问题是这个。其中两项活动在仓库级别进行。其余三个发生在帐户级别(WH 不适用)。然而,最终每个仓库都会汇总到一个主账户。
因此,如果我有一个事实表,我基本上需要两个 FK,并且您必须遍历事实表来构建 WH > Account 层次结构,这似乎很难维护。我想要一维表。
或者是否建议我将其拆分为两个事实表,即使每个表的唯一不同特征是活动是否发生在仓库中。
报告的目标是帐户级别,但拥有 WH 信息在某些时候可能会很有用。而且我需要检查重复项等,这就是为什么我倾向于第一个,但不知道如何适当地处理层次结构。
单一事实表设计
- 项目:1
- 帐号:14
- 仓库:2
- ActivityType:3
- 日期:20130204
- 序列号:123456
- 计数:1
双重事实表设计
表 1
- 项目:1
- 仓库:2
- ActivityType:3
- 日期:20130204
- 序列号:123456
- 计数:1
表 2
- 项目:1
- 帐号:2
- ActivityType:3
- 日期:20130204
- 序列号:123456
- 计数:1
【问题讨论】:
-
如果将仓库和账户都存储在事实表中,为什么很难“构建WH>账户”层次结构?听起来在您的报告中您将忽略仓库字段并在帐户上汇总。
-
大卫,我的意思是,如果我想在某个时候再次查看完整的层次结构,我将不得不使用事实表作为链接。虽然我认为这可能不是问题。我想我为什么质疑这种方法是因为两者之间的层次结构是如此紧密地联系在一起,将它们保持在同一维度似乎是最佳实践。虽然听起来这可能是我最好的选择?
标签: sql data-warehouse