0

我有

维度表

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)

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

到目前为止,我的理解只是可数的措施应该是事实表,所以我猜 member_card 不应该出现在事实表中。

如果我错了,请告诉我。

4

2 回答 2

0

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

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

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

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

日均收入?

平均月收入,按月计算?

如果您有商店 ID、日期、销售数量(每行项目)和单价,那么很容易计算出来。

于 2014-03-19T19:30:12.133 回答
0

您不应该在同一个事实表中添加聚合列。事实表中的措施应该是一致的。因此,如果您想要聚合指标,请按照所需的粒度构建一个单独的事实表。

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

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

维杰

于 2014-03-25T05:57:08.447 回答