假设我有如下所示的表格。我正在尝试创建正确的事实表。
如果我将两个表合并为一个事实表,我将重复销售度量,因为每次销售至少包含两项对整体销售有贡献的项目(管理费、清洁等 - 项目的数量可能会有所不同)。因此,对于汽车 1,总销量为 5000 + 50 + 100。我也不能简单地汇总,因为需要逐项列出。
我是否需要创建两个事实表,或者我是否需要以完全不同的方式处理这个问题?我很想以 1:n 的方式将汽车销售表链接到收费表。
你有什么建议吗?
汽车销售表
car_id | 促销 | 货币 |
---|---|---|
1 | 5000 | 美元 |
2 | 7000 | 美元 |
收费表
charge_id | 类型 | 数量 | 货币 | car_id |
---|---|---|---|---|
14 | 管理费 | 50 | 美元 | 1 |
15 | 清洁 | 100 | 美元 | 1 |
22 | 停车 | 10 | 美元 | 2 |
25 | 清洁 | 70 | 美元 | 2 |
如果您正在创建一个 Fact_Sales_Table,您应该对数据进行非规范化并合并。数据建模有些主观并基于需求。
如果您想要一个销售事实表,也许可以考虑一个描述分项销售的销售类型维度。因此,在您的主要事实表中,您实际上只会包括每笔整体汽车交易中每个订单项的销售额。
除非需要不同的粒度或要求两个不同的事实表,否则两个事实表似乎是不必要的?
对非规范化措施(此处
sale
)是一个非常糟糕的主意(如您所述),这将导致总和计算失败。
但是你不需要以这种方式combin你的两个事实表。
如果您的主要目标是计算每辆车的摘要,只需添加一个新的
charge_id
(比如100 - 带有type = sale
)并将数据添加到第二个表中。不需要第一张桌子。
总成本计算将是每个
amount
的car_id
的简单聚合。
您需要添加一些其他属性作为预订和有效期时间戳。