数据仓库设计 - 如何设计事实表?

时间:2013-03-01 23:21:37

标签: data-warehouse fact-table

我是DW的新手,我需要为电子商务网站创建一个非常简单的仓库。

维度表

  • 日期维度表(ID,年,季度,月,日)
  • 时间维度表(id,小时,分钟)
  • 产品维度表(ID,产品名称,价格,类别ID)
  • 产品类别维度表(ID,类别名称)

事实表

  • 每件商品的销售额(日期ID,产品ID,销售数量,价格总和)

此事实表适用于“6月份销售的产品数量”等问题。

但我需要回答诸如“哪个类别在6月份销售的产品最多?”的问题。或者“星期三一天中最成功的商业小时是什么?”。

我看到两种可能性:

  1. 我可以将新列(类别ID或时间ID)添加到产品事实表中。但是这个id会改变表格的粒度
  2. 我可以为类别创建另一个事实表,其中包含有关类别的事实。但是(在我看来)浪费了磁盘空间,不是吗?
  3. 哪种可能性是正确的?

3 个答案:

答案 0 :(得分:1)

您的销售事实表应按订单项目

您可以只为一天中的小时添加简并维度,或者以小时为单位添加时间维度表。

为什么不直接在dim_product中添加类别名称?

答案 1 :(得分:0)

如果您在每个项目级别的销售额中创建Fact_table,即几乎是交易粮食,我认为您可以将类别ID添加到引用一个Dim_category的Fact_table。 这肯定会增加与Fact_table相关的磁盘存储,但在稍后阶段,这个Datamart将能够回答您的任何问题。

答案 2 :(得分:0)

烨。始终以业务流程中最细微的方式创建事实(如果您的源系统允许) - 在这种情况下,每个产品在特定数据和时间销售给客户。如果(并且仅在)性能需要时,您总是可以从那些精细事实中创建聚合

与返工相比,磁盘空间相当便宜。