在星型模式 DWH 中构建无事实事实的最佳方法
Posted
技术标签:
【中文标题】在星型模式 DWH 中构建无事实事实的最佳方法【英文标题】:Best approach to build factless fact in star schema DWH 【发布时间】:2020-10-18 13:18:50 【问题描述】:我有一个案例,我正在为我的 DWH 构建无事实事实表。对于这种情况,我想问两个维度:位置和商店。我有两种方法。
构建 dim_store 和 fact_account。然后将所有位置数据放入fact_account表中
构建 dim_store、dim_location 和 fact_account。然后把store_id和location_id放到fact_account上
以下是这两种方法的可视化:
1。
2。
哪种方法最好?为什么?
提前谢谢你。
【问题讨论】:
您好 - 维度模型应该围绕您的报告要求进行设计,因此在不知道这些是什么的情况下很难在设计中发表评论。位置是否只能与商店关联(而不是住宅/办公室/工厂/等)?如果是这样,那么为什么不将位置数据非规范化到商店维度中呢?顺便说一句,选项 1 肯定是错误的,因为事实表不应该包含属性,除非它们是退化维度? 第一种方法称为反规范化。顺便说一句,您还有第三种选择,您可以非规范化两个维度并仅以事实表结束。 非规范化既不好也不坏。这取决于您的查询和处理模式。您需要更多存储空间,但可以加快一些查询速度。而且 - 不要忘记 - 你负责保持非规范化模式的一致性。 @NickW 我将拥有其他维度,例如供应商、仓库等,并在 fact_account 上整合所有内容。 @MarmiteBomber 是的,我知道非规范化过程,感谢您指出这一点。因此,如果我有其他事实表 - 例如包含商店及其订单的 fact_sales 和 fact_order,我不会在维度上维护商店,而是在事实表上维护? 【参考方案1】:选项1肯定是错的,里面描述的不是立体模型。
选项 2 是一个正确设计的维度模型。是否是对数据进行维度建模的最佳方式取决于您的报告要求。
【讨论】:
以上是关于在星型模式 DWH 中构建无事实事实的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章