包含事实表中的平均值

问题描述:

这是关于数据仓库的问题,我听说过一些事情,你不允许在事实表中包含Average,我不知道为什么,有谁能告诉我为什么,一个例子会很好,谢谢您。包含事实表中的平均值

采取以下事实表设计:

date_id, quantity_sold, amount_sold, avg_price

其中avg_price被定义为AMOUNT_SOLD/quantity_sold,这是跨越每个产品的平均价格。

现在,想象一下这样的场景:

  • 在日期1你卖1个单位产品1与价格在100和99个的价格1单位产品2的;在日期2
  • 你卖10个单位的产品1,没有产品的2

你得到如下表:

date_id, quantity_sold, amount_sold, avg_price 
1, 100, 199, 1.99 
1, 10, 1000, 100 

有没有你所能聚集avg_price给你的方式有意义的事。 Avg(100,1.99)不是两天内的平均价格;没有办法将这两个数字相加并得到实际的平均价格。

得到一个实际avg_price出这一事实表的唯一方法是通过取得两个主要元件的总和与它们划分,

sum(amount_sold)/sum(quantity_sold), 

返回一百十分之一千一百九十九= 10.9。

因此,该事实表上的平均值是无意义的数字。

用一种不同的方式:除了您还知道每个子集的大小,不可能将集合上的平均值表示为不同子集之间的平均值的函数。