0

我的数据集市中有以下实体:

  • 位置:包含国家、城市等信息。
  • 用户:包含有关用户的信息,其中包括他们的地址,其中包括国家和城市

这两个维度都包含有关国家和城市的属性。仅将属性存储在位置维度中会更有意义,因此我们不会重复数据,并且可以通过事实表将表代理键连接在一起来检索用户的位置信息。但是,这样做会增加开销,因为我们需要执行多个连接。

我对维度建模和数据仓库缺乏经验,所以我不知道哪个是更好的做法:

  1. 让两个维度包含相同的属性
  2. 将属性放入它所属的表中(在本例中为 Location 维度)
4

1 回答 1

0

选项 1 更接近 Kimball 方式。维度建模不优先考虑避免数据重复。在这种情况下,他们会争辩说数据“属于”多个表。用户有关于他们地址的信息,所以这是关于用户的信息——它属于用户。

重要的是数据在字段的命名和内容的性质上是一致的——这取决于您作为 ETL/DW 的负责人来完成工作以确保情况如此。

很多人选择选项 2。对于这种方式,我不知道您的事实的性质(所以我可能是错的)但听起来如果您想知道用户的位置,您将拥有来自的密钥维度而不是事实——这将是一个“雪花”结构。这些并不总是错误的,但不允许您充分利用维度模型。

于 2017-05-19T07:21:16.110 回答