我有一个包含 70 万个条目的维度。其中 10 个是客户特别感兴趣的,将经常用于查询,因此需要快速检索。我是否:a)向标记这些记录的维度添加一个属性,或 b)采用雪花模式并添加另一个包含 10 条记录的维度并将其附加到 700K 维度(实际上是 1 对 1 可选),或c) 添加一个带有 10 的新维度并将其附加到事实(但我需要从 700K 表中获取信息 - 除非我进一步对解决方案进行非规范化并复制新维度中的属性作为 ETL 的一部分)?
我总是选择选项 a),因为它对用户来说是最简单、最直观的解决方案。除了添加标志属性之外,我更喜欢创建主属性的“VIP”版本(如果可能)。例如,假设您的维度是“客户”,它包含“客户名称”。我会创建一个新属性“特殊客户名称”,列出特殊兴趣客户的名称,然后将其余的替换为“其他”或类似的名称。这样的设计在报表上看起来很棒,并且易于实现。
我总是尽可能地避免雪花设计。它在性能上较差,并且对用户不直观。唯一合理的情况是我会使用它 - 如果我需要在不同粒度的事实表之间共享一个维度。
第三种选择在概念上相当丑陋。我只会在维度太大(几百万个条目)并扼杀整个星型模式的性能时才考虑它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句