2014-11-04 4 views
0

Речь идет о хранилище данных Вопрос, я слышал что-то о том, что вам запрещено включать Среднее значение в таблице фактов, я не уверен, почему, может кто-нибудь сказать мне, почему, пример будет приятным, спасибо вы.Включить среднее значение в таблицу фактов

ответ

0

Возьмите следующий дизайн таблицы фактов:

date_id, quantity_sold, amount_sold, avg_price

где avg_price определяются как AMOUNT_SOLD/quantity_sold, что цена в среднем по каждому продукту.

Теперь представьте, что этот сценарий:

  • на дату 1 вы продаете 1 единицы продукта 1 с ценой 100 и 99 единиц продукта 2 с ценой 1;
  • на сегодняшний день 2 вы продаете 10 единиц продукта 1 и ни один продукт 2.

Вы получаете следующую таблицу:

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.

Следовательно, avg на этой таблице фактов - бессмысленное число.

Поместите его по-другому: невозможно выразить среднее значение по множеству как функцию средних значений для разных подмножеств, если только вы не знаете размер каждого подмножества.

Смежные вопросы