我有描述[events]和[event_segment]以及[event_staff]的事实表。
[events]由许多[event_segment]组成 - 例如'介绍','预检'第一阶段','第二阶段' [events]的密钥(即粒度唯一id)是[event_ref],但[event_segment]的密钥(即唯一标识符)是复合的 - [event_ref]和[segment_order]
[event_staff]有很多人员参加1个活动,因此唯一身份证是[event_ref]和[staff_id]的合成
有几个一致的尺寸 - 例如日,地点等。
我正在努力决定这个数据的模型,因为我希望能够轻松比较3个表中的汇总事实,特别是在报告中。即count([staff])vs sum([event_segment_duration])其中[staff_type] =' basic'和[event_segment_type]!='清理'
因为有很多工作人员参加活动,很多细分活动,但我不能将工作人员绑定到我必须在[event_ref]上分组的部分。
这'有效,但是它会加入(正好分组)事件,因为它会破坏Kimball /数据仓库标准吗?
另外,[event_ref]表中是否应该存在[event_ref],因为它应该是代理键,因此无法进行分组?
答案 0 :(得分:0)
我认为你没有违反任何标准。
您刚刚遇到另外两个具有不同粒度级别的事实表。
在我看来,您可以将该细分视为事件的子项,因此您可以考虑事件维度的细分部分。
工作人员只是一个不同的维度(将维度拆分为多个孩子从来都不是一个好主意),而且工作人员维度的最低级别不符合事件1的最低级别。
这是一个普通的真实单词场景,它非常频繁,你可以想象一个足球队,你可以有一些与Player
s(孩子)相关的游戏统计数据,其中一些与Team
相关联(父母),还有一些其他信息,比如为每个Game
(不同维度)销售的门票,这些信息无法与特定玩家相关联,但肯定有更多细节,而不仅仅是Team
级别。