繁体   English   中英

如何在数据仓库中建模维度到维度的关系? 去明星还是雪花?

[英]How to model dimension-to-dimension relationship in data warehouse? Go star or so snowflake?

我正在创建一个数据仓库作为 SSAS 和 PowerBI 的来源。 我正在建模的事实表是 JobProcess。 它是 M:M 关系中作业和流程之间的联结表。 {JobId、ProcessId、StartTime、FinishTime...}。 它的外键 JobId 指向具有 30 多个属性的 Job 维度表。 反过来,工作表可以指向客户维度表(30+ 属性)。 作业是针对特定客户发出的。 我的意见是:

  1. 去雪花模式。 那就是 JobTask(Fact) --> Job(Dimension) --> Customer(Dimension) 这样感觉自然。 请注意,我不会完全标准化。 通过加入 6 个以上的表格,工作和客户维度士气低落。 我知道推荐使用星型模式,但我没有发现这种设计有任何问题。

  2. 通过将 Customer 维度合并到 Job 维度来 Go Star Schema。 我可以看到以下问题我会记错号码。 没有分配工作的客户。 湾。 客户维度位于其他维度之上。 它连接到其他事实表和维度。 我需要保留客户维度并将其与其他维度合并以保留星型模式。 它增加了 ETL 的工作量,并为 Single Source of Truth 造成了混乱。

  3. 通过将 CustomerId 放入 JobProcess 事实表来实现 Star Schema。 然后在 JobProcess 我们有 {JobId, ProcessId, CustomerId...}。 注意 CustomerId 完全依赖于 JobId,这样可以吗? 此外,当我尝试计算客户有多少工作时,我需要计算不同的数量,因为 Job 可以在 JobTask 表中重复。 一般来说,我的问题是如何建模维度到维度的关系? 通过合并到另一个维度或事实表?

任何想法表示赞赏!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM