维数据建模设计 - 数据仓库

时间:2014-03-15 19:05:05

标签: olap business-intelligence star-schema

我有

维度表

item (item_id,name,category)
Store(store_id,location,region,city)
Date(date_id,day,month,quarter)
customer(customer_id,name,address,member_card)

事实表

Sales(item_id,store_id,date_id,customer_id,unit_sold,cost)

我的问题是,如果我想查找一个月的某个位置的平均销售额我是否应该在fact table中添加average_sales列,如果我想查找使用会员卡完成的销售,我应该在事实表中添加相应的字段吗?

到目前为止我的理解只是可数量的措施实际上应该是表格,所以我认为membership_卡不应该是实际上的表格。

如果我错了,请告诉我。

2 个答案:

答案 0 :(得分:0)

不,您不应该将平均销售列添加到您的事实表中,它是一个计算值,并且与事实表不是“粒度”。

您的销售事实表应该尽可能精细,因此它应该是sales_order_line_items,每个销售订单行项目一行。

您想要计算给定月份给定商店的平均销售额......?

首先,“销售”是指“收入”(总计美元)还是“销售数量”?

平均每日收入?

每月平均月收入?

如果您有商店ID,日期,销售数量(每个订单项)和单价,那么很容易弄明白。

答案 1 :(得分:0)

您不应在同一事实表中添加聚合列。事实表中的措施应该是相同的。因此,如果您需要聚合度量标准,请在所需的粒度下构建单独的事实表。

因此,我可能有一个名为F_LOC_MON_AGG的事实聚合表,其中包含在位置和月份级别聚合的度量。

如果您没有聚合表,OBIEE等现代商业智能工具可以在运行时进行聚合。

维杰