0

我有描述 [events] 和 [event_segment] 和 [event_staff] 的事实表。

[events] 由许多 [event_segment] 组成 - 例如“introduction”、“pre-check”、“1st stage”、“2nd stage”等。[events] 的键(即粒度唯一 ID)是 [event_ref],但是 [event_segment] 的键(即唯一标识符)是复合的 - [event_ref] 和 [segment_order]

[event_staff] 对 1 个事件有很多人员,因此唯一 id 是 [event_ref] 和 [staff_id] 的组合

有几个一致的维度 - 例如日期、位置等。

我正在努力决定该数据的模型,因为我希望能够轻松比较 3 个表中的汇总事实,特别是在报告中。即 count([staff]) vs sum([event_segment_duration]) where [staff_type] = 'basic' and [event_segment_type] != 'clean up'

因为有很多员工参加一个活动,一个活动有很多部分,但我无法将员工与我必须在 [event_ref] 上分组的部分联系起来。

这“有效”,但它是否算作违反 Kimball/数据仓库标准,因为它正在加入(很好地分组)事件?

此外,[event_ref] 是否应该存在于 [event_segment] 表中,因为它应该是代理键,因此不能用于分组?

4

1 回答 1

0

我认为你没有打破任何标准。

您刚刚碰巧有两个具有不同粒度级别的附加事实表。

在我看来,您可以将细分视为事件的子项,因此您可以将细分视为事件维度的一部分。

工作人员只是一个不同的维度(将一个维度拆分为多个子级绝不是一个好主意),并且工作人员维度的最低级别不符合事件的最低级别。

这是一个正常的真实场景,并且非常频繁,你可以想象一个足球队,你可以有一些与Players(孩子)相关联的比赛统计数据,一些与Team(父母)相关联的比赛统计数据,还有一些其他信息,比如每个人售出的门票Game(不同维度)无法与特定玩家相关联,但肯定有更多细节,而不仅仅是Team关卡。

于 2013-10-24T22:34:11.827 回答