维度建模 - 如何使用维度不一致的事实处理单个事实表?

时间:2012-09-29 17:14:47

标签: data-warehouse business-intelligence dimensional-modeling

我想为餐馆销售交易设置一个事实表。添加整个事实表将为整个餐厅提供整个销售。餐厅有两个主要的收入来源 - 食品和饮料。每个的尺寸都非常不同。

例如,对于食物,我可能想要追踪它是否是无乳制品,无麸质等。或者我可能想看看这道菜是意大利菜,法国菜等。对于葡萄酒,我可能会对葡萄酒感兴趣,葡萄酒来自哪里,葡萄酒是什么葡萄。

如何使用一个事实表完成此操作?如果项目是食物,我应该简单地使用Wine维度为NULL吗?如果该项目是葡萄酒,我应该将Food维度设为NULL吗?

1 个答案:

答案 0 :(得分:1)

你的事实可能看起来像这样吗?

SALES_LINE_ITEM_FACT
   TRAN_DATE
   TRAN_HOUR (or other time buckets if needed)
   SERVER_KEY
   TABLE_KEY
   SEAT_KEY
   PROMOTION_KEY
   PRODUCT_KEY
   REGULAR_PRICE
   NET_SALE_PRICE
   PRODUCT_COST

如果您想从销售事实中报告有多少人订购了特定的葡萄酒,那么您的“产品”维度就是您需要关注的地方。

首先,它可能看起来像:

PRODUCT_DIM
   PRODUCT_KEY
   PRODUCT_NAME
   PRODUCT_CATEGORY (food / beverage)
   PRODUCT_SUBCATEGORY (wine / beer / dairy / french / italian etc)
   CURRENT_AVERAGE_PRODUCT_COST

您可以将详细信息添加为类别层次结构中的另一个级别,或者如果要进行更详细的分析,请为某些产品类型创建特定的雪花并将它们连接到产品暗淡。