2014-11-04 65 views
0

這是關於數據倉庫的問題,我聽說過一些事情,你不允許在事實表中包含Average,我不知道爲什麼,有誰能告訴我爲什麼,一個例子會很好,謝謝您。包含事實表中的平均值

回答

0

採取以下事實表設計:

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。

因此,該事實表上的平均值是無意義的數字。

用一種不同的方式:除了您還知道每個子集的大小,不可能將集合上的平均值表示爲不同子集之間的平均值的函數。