我有一个零售销售系统,想使用 ralph kimball 的 Dimensional Modeling 创建一个数据仓库。
我有一个简单的order fact table
那个措施order quantity
和order dollar amount
。从我在书中和互联网上读到的内容来看,这是事实表上的order number
一个退化维度。
然后order fact table
有一个status
,最初我认为它是一个流程,所以我想到了累积的快照事实表。一切都很好,直到我意识到这status
实际上不是一个流程,它是一个标签,因此订单可以将状态从“a”更改为“b”,然后再次更改为“a”。我的情况更糟,因为order fact table
is 现在有 3 种状态需要跟踪其更改。所以我认为累积的快照事实表在这里不起作用。
我的尝试是创建 4 个事实表,order
order status a
order status b
order status c
. 每个新订单都会在表中创建一行,order
并在每个订单中创建一行作为初始状态order status
。然后通过在 中创建一个新行来完成对状态的每次更改order status
。
由于order status
表与表相关order
,因此我需要这 3 个order status
表来引用order
表。怎么做?使用相同的order number
(退化维度)就足够了吗?我认为一致性维度也可以解决这个问题,但是这些维度行会像order
表格一样增长。对此有什么想法吗?