DM和层次结构-将来使用的尺寸

时间:2019-04-05 23:07:21

标签: dimensional-modeling

我的第一个DM很温柔。

使用ERD建模层次结构,如下所示:

enter image description here

响应是我的事实。我所看到的所有建议都表明创建了一个维度(例如dim_event)并将事件,部门和组织归一化为该维度:

enter image description here

如果我知道将来会有某些事实/报告依赖于组织维度或部门维度而不涉及此特定事实怎么办?

对于我(从OLTP领域而言),更有意义的是为主要组件创建单独的尺寸并将其附加到事实上。这样,它们可以作为一致的维度重用。

enter image description here

这样,对于任何更新的维度属性,将只有一个暗表;如果我对所有内容进行了非规范化处理,那么我可以在多个维度表中使用组织名称。

-更新-

根据要求:

“事件”是旨在收集来自特定客户子集的响应数据的电子邮件活动。他们登录,我们问他们一系列问题并给答案打分。 “响应”是我们从事件中生成的一组分数。

因此“事件”记录可能如下所示:
名称:“ 2019年测试活动”
部门:“财务”

“响应”记录如下所示:
活动:'2019测试活动'
retScore:2190
balScore:19.98

1 个答案:

答案 0 :(得分:0)

如果您的组织和部门紧密耦合(即部门也意味着组织),则应将它们规范化并创建为一个维度。如果部门和组织没有层次关系,则它们将是单独的维度。

您的事件很可能是黯淡的(退化的)事实。事实将指向描述事件的各个维度,并包含事件发生时所发生事件的度量(retScore,balScore)。

一种确定您是否正在处理昏暗或事实的好方法是问“在发生任何事情之前我知道什么?”我希望您知道可以使用哪些组织和部门。您甚至可能知道某些重复发生的事件类型(血液活动,年度筹款活动),也可以是单独的维度(事件类型)。但是在安排某项活动之前,您将没有关于HR筹款活动2019(事实)的任何详细信息。

维表示可能性,但事实记录表明实际发生了某些事情。我最喜欢的类比是餐厅菜单与餐厅订单。即使从未订购过菜单上的项目,也可以引用它们。菜单是尺寸,顺序是事实。

希望这会有所帮助。