2016-09-05 14 views
3

я кулачок по этой фразе:Star Schema Fact Не стоит хранить цену - Почему?

Мы всегда стремимся сделать факты Добавка по размерам и точно в соответствии с зерном. Обратите внимание, что мы не храним цену сканируемого продукта , потому что цена неаддитивная. Скорее, мы храним расширенную цену, которую можно бесплатно добавить через товары, магазины, время и все другие размеры.

Источник: Fact Tables - Kimball Site.

Я предполагаю, что факт является продаж таблицы фактов. Я понимаю разницу между аддитивными и неаддитивными мерами.

Цена товара добавка. Эта страница также считает это: SQLBI Fact Table Design.

Я не могу понять приведенное выше обоснование, почему цена не хранится в таблице фактов. Пожалуйста, объясните, можете ли вы это сделать. Спасибо.

+3

В большинстве сценариев цена за единицу не является аддитивной. В данных продаж не имеет смысла суммировать цену за единицу с течением времени или линейку продуктов. Возможно, существуют ситуации, когда цена является полуаддитивной, но они не могут легко задуматься. У вас есть такой пример? Если да, то по каким измерениям вы ожидаете добавить цены на единицу? – sqlvogel

+2

Ссылка на таблицу фактических таблиц SQLBI почти наверняка использует термин «SalesPrice», когда они означают «SalesAmount». Из их примера видно, что это то, что было предназначено, но автор использовал неправильную терминологию. Если вы посмотрите на их пример неаддитивного факта, то они используют «чистую прибыль%». Чистая прибыль арифметически определяется из стоимости единицы продукции и удельной стоимости. Себестоимость также не является дополнительной. Вы не можете вычесть один неаддитивный факт из другого, чтобы получить аддитивный факт. –

+0

@sqlvogel, спасибо за ваш комментарий. У меня нет настоящего примера, но я вижу вашу мысль. Как насчет цены за единицу * Единицы этой комбинации выглядят полезными. Если да, почему бы не получить цену за штуку в таблице фактов? (Если вы хотите переместить свой комментарий в область ответа, я проголосую за него). – NoChance

ответ

1

Цена за единицу товара определенно неаддитивная. Если вы хотите получить общий объем продаж, вы добавите увеличенную цену (Расширенная цена = единичная цена x Количество продано. Например, если клиент покупает 5 упаковок камеди по цене 1,00 долларов США, расширенная цена составляет 5,00 долларов США). Если вы суммировали цены за единицу каждой строки заказа на определенную дату, что бы вам сказал? Не очень полезно.

Также обратите внимание, что ссылка SQLBI не использует термин 'Единица' цена.

Вы могли бы, однако, сохранить цену за единицу как измерение, где вы можете найти это полезным.

+0

Благодарим вас за ответ. Просьба уточнить, что вы называете «Расширенная цена» – NoChance

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

  • Нет связанных вопросов^_^