如何处理具有相似属性的维度?
Posted
技术标签:
【中文标题】如何处理具有相似属性的维度?【英文标题】:How to handle dimensions with similar attributes? 【发布时间】:2017-05-18 21:27:49 【问题描述】:我的数据集市中有以下实体:
位置:包含国家、城市等信息。 用户:包含有关用户的信息,包括他们的地址, 其中包括国家和城市这两个维度都包含有关国家和城市的属性。仅将属性存储在位置维度中会更有意义,因此我们不会重复数据,并且可以通过事实表将表代理键连接在一起来检索用户的位置信息。但是,这样做会增加开销,因为我们需要执行多个连接。
我对维度建模和数据仓库缺乏经验,所以我不知道哪个更好:
-
让两个维度包含相同的属性
将属性放入它所属的表中(在本例中为
位置尺寸)
【问题讨论】:
【参考方案1】:选项 1 更接近于 Kimball 方式。维度建模不优先考虑避免数据重复。在这种情况下,他们会争辩说数据“属于”多个表。用户有关于他们地址的信息,所以这是关于用户的信息——它属于用户。
重要的是数据在字段的命名和内容的性质上是一致的——这取决于您作为 ETL/DW 的负责人来完成这项工作以确保情况如此.
很多人选择选项 2。对于这种方式,我不知道您的事实的性质(所以我可能是错的)但听起来如果您想知道您将拥有的用户的位置来自维度而不是事实的关键——这将是一个“雪花”结构。这些并不总是错误的,但不允许您充分利用维度模型。
【讨论】:
假设我正在尝试衡量某天在某个位置购买用户(客户)的产品。我的事实表描述了这些交易。我想回答的问题之一是用户购买产品的不同区域(地点)。 如果是用户的位置,而不是他们购买的商店,那么该位置将在用户维度表中。 我对产品的位置(例如,产品的购买地)更感兴趣。在这种情况下,将位置放在产品维度中是否有意义?如果它确实进入产品维度,那么我真的需要位置维度吗? 这取决于您的购买位置数据来自哪里。如果它是您了解客户的“客户位置”,则将其放在客户维度上。如果它是零售店的位置,请将其作为零售店维度上的位置。如果它的位置只是简单地标记在每个购买交易的事实数据源上(独立于客户),那么将其放在事实链接到的自己的维度中。 啊,位置数据就是客户的位置。我会把它放在客户维度。这样我就不需要位置维度了?以上是关于如何处理具有相似属性的维度?的主要内容,如果未能解决你的问题,请参考以下文章