我正在为 VoIP 服务创建一个关于“通话记录系统”的维度模型。我将仅举一个小例子来说明我的问题。
假设我有一个代表单个呼叫的事实。我有一个维度叫做客户端,还有一个维度叫做提供者。(假设还有其他维度,例如日期,当然等等......)
(Dimension)Client ---> (Fact)Call <--- (Dimension)Provider
有了这个,我将能够看到客户打了多少电话,或者通过提供商发送了多少电话,以及其他问题。
假设一个客户端与一个提供者相关联,一个提供者可以有多个客户端。
那么,问题来了。如何创建一个查询,例如:每个提供商有哪些客户?
这似乎是一个介于两个维度之间的查询。我不能涉及这个事实,因为如果客户从未使用过该服务,他将不会出现在调用事实表中,并且他不会出现在这个“每个提供商的客户”查询中。
我自己在想,一种方法是创建一个角色扮演维度,一个客户端维度的视图,并将其直接添加到提供者维度,只是为了进行这样的查询。它会是这样的:
(Dimension)Client ---> (Fact)Call <--- (Dimension)Provider <--- (Dimension)View Client
当然,使用这种方法,用户必须非常小心不要将此 View Client 维度与事实表一起使用,因为它会重复事实行。
那么,这是我需要使用著名的无事实事实表的情况之一吗?
这样做的正确方法是什么?
谢谢!