这是关于数据仓库的问题,我听说过,你不允许在事实表中包含Average,我不知道为什么,谁能告诉我为什么,一个例子会很好,谢谢。
答案 0 :(得分:0)
采用以下事实表设计:
date_id, quantity_sold, amount_sold, avg_price
其中avg_price定义为amount_sold / quantity_sold,即每个产品的平均价格。
现在,想象一下这种情况:
您可以获得下表:
date_id, quantity_sold, amount_sold, avg_price
1, 100, 199, 1.99
1, 10, 1000, 100
你无法聚合avg_price来为你提供有意义的东西。平均值(100,1.99)不是两天的平均价格;没有办法汇总这两个数字并得到实际的平均价格。
从该事实表中获取实际avg_price的唯一方法是获取两个主要元素的总和并将它们分开,
sum( amount_sold) / sum( quantity_sold),
返回1199/110 = 10.9。
因此,该事实表上的平均值是无意义的数字。
以不同的方式表达:除非你也知道每个子集的大小,否则不可能将一个集合的平均值表示为不同子集的平均值的函数。