DM 和层次结构 - 未来使用的维度
DM and hierarchies - dimensions for future use
我的第一个 DM 所以要温柔..
使用 ERD 对层次结构建模如下:
回复就是我的事实。我看到的所有建议都表明创建单一维度(比如 dim_event)并将事件、部门和组织非规范化到该维度:
如果我知道将来 facts/reports 会依赖组织维度或不涉及此特定事实的部门维度怎么办?
对我(来自 OLTP 世界)来说,为主要组件创建单独的维度并将它们附加到事实中更有意义。这样它们就可以作为一致的尺寸重复使用。
这样一来,对于任何更新的维度属性,都会有一个暗淡的 table;如果我将所有内容都非规范化,我可以在多个维度中拥有组织名称 tables.
--更新--
根据要求:
"event" 是一种电子邮件活动,旨在收集来自特定客户子集的响应数据。他们登录后我们会问他们一系列问题并对答案进行评分。
"response" 是我们从事件中生成的一组分数。
因此 "event" 记录可能如下所示:
name: '2019 测试活动'
部门:'finance'
"response" 记录看起来像这样:
事件:'2019 测试事件'
retScore: 2190
balScore:19.98
如果您的组织和部门紧密耦合(即部门也意味着组织),则应将它们非规范化并创建为单一维度。如果department & organization没有层级关系,那就是单独的维度。
你的事件很可能是一个模糊的(堕落的)事实。事实将指向描述事件的各个维度,并将包含有关事件发生的情况的度量(retScore、balScore)。
确定您是在处理问题还是事实的一个好方法是询问 "What do I know before any thing happens?" 我希望您知道哪些组织和部门可用。您甚至可能知道某些类型的重复事件(献血活动、年度筹款活动),它们也可能是一个单独的维度(事件类型)。但在安排某个活动之前,您不会知道有关特定活动 HR Fundraiser 2019(事实)的任何详细信息。
维度代表可能性,而事实记录则表明某事确实发生了。我最喜欢的类比是餐厅菜单与餐厅订单。即使从未订购过,也可以参考菜单上的项目。菜单是维度,订单是事实。
希望这对您有所帮助。
我的第一个 DM 所以要温柔..
使用 ERD 对层次结构建模如下:
回复就是我的事实。我看到的所有建议都表明创建单一维度(比如 dim_event)并将事件、部门和组织非规范化到该维度:
如果我知道将来 facts/reports 会依赖组织维度或不涉及此特定事实的部门维度怎么办?
对我(来自 OLTP 世界)来说,为主要组件创建单独的维度并将它们附加到事实中更有意义。这样它们就可以作为一致的尺寸重复使用。
这样一来,对于任何更新的维度属性,都会有一个暗淡的 table;如果我将所有内容都非规范化,我可以在多个维度中拥有组织名称 tables.
--更新--
根据要求:
"event" 是一种电子邮件活动,旨在收集来自特定客户子集的响应数据。他们登录后我们会问他们一系列问题并对答案进行评分。 "response" 是我们从事件中生成的一组分数。
因此 "event" 记录可能如下所示:
name: '2019 测试活动'
部门:'finance'
"response" 记录看起来像这样:
事件:'2019 测试事件'
retScore: 2190
balScore:19.98
如果您的组织和部门紧密耦合(即部门也意味着组织),则应将它们非规范化并创建为单一维度。如果department & organization没有层级关系,那就是单独的维度。
你的事件很可能是一个模糊的(堕落的)事实。事实将指向描述事件的各个维度,并将包含有关事件发生的情况的度量(retScore、balScore)。
确定您是在处理问题还是事实的一个好方法是询问 "What do I know before any thing happens?" 我希望您知道哪些组织和部门可用。您甚至可能知道某些类型的重复事件(献血活动、年度筹款活动),它们也可能是一个单独的维度(事件类型)。但在安排某个活动之前,您不会知道有关特定活动 HR Fundraiser 2019(事实)的任何详细信息。
维度代表可能性,而事实记录则表明某事确实发生了。我最喜欢的类比是餐厅菜单与餐厅订单。即使从未订购过,也可以参考菜单上的项目。菜单是维度,订单是事实。
希望这对您有所帮助。