我需要创建一个数据仓库来分析订单流程中的数据,但我不确定如何继续,因为我的研究导致了信息冲突。为简单起见,我将仅使用最重要的表格来描述我的问题。
Tbl订单(事实):
客户下订单后,它会在 TblOrder 中创建一个条目。
每个条目都是唯一的,并且有一个OrderNo以及它自己的创建时间戳
TblOrderSubProcess(事实):
一个订单至少由1个子流程组成。
订单的每个子流程都是 TblOrderSubProcess 中的唯一条目,并且具有自己的创建时间戳。
每个子流程包含一列,其中包含 OrderNo
只有仓库中有足够的材料才会进行录入
在仓库之间移动物料(用于存储管理)也是一个子流程,但具有 OrderNo = null
TblOrderInformation(维度):
星型模式是 Power BI 中的最佳实践,我不应该在 TblOrder 和 TblOrderSubProcess 之间创建关系,但会有需要两个表之间关系的视觉效果。
我的解决方案是创建一个平面表,其中我TblOrder LEFT JOIN TblOrderSubProcess。这个解决方案有效,但有缺陷:
如果我创建日期切片器,它将始终使用 Order 或 OrderSubProcess 的日期。这意味着我的 Power BI 报告只能包含 Order 或 OrderSubProcess 的信息
加入表格会造成冗余
创建的平面表会非常大,最初有 30 列。柱子会随着时间的推移而增长。
我的目标是一个解决上述问题并遵循最佳实践的数据模型
这听起来与订单标题 - 订单行数据建模问题非常相似。 Kimball 小组在下面写了一篇关于此的博客文章。 https://www.kimballgroup.com/2007/10/design-tip-95-patterns-to-avoid-when-modeling-headerline-item-transactions/