我正在为VoIP服务创建关于“呼叫记录系统”的维度模型。 我将举例说明一个小例子来展示我的问题。尺寸建模 - 无事实查询
假设我有一个事实表示一次调用。我有一个叫做Client的维度,另一个叫做Provider。 (假装有其他尺寸,当然一样的日期,等..)
(Dimension)Client ---> (Fact)Call <--- (Dimension)Provider
有了这个,我就可以看到有多少调用客户端做了,或有多少电话是通过发送提供者和其他问题。
而且让我们假设一个客户端与一个提供者关联,并且一个提供者可以拥有多个客户端。
所以,问题来了。嗨,我可以创建一个查询,如:每个提供商有哪些客户端?
它似乎是一个查询,只是在两个维度之间。我不能涉及这个事实,因为如果客户端从未使用该服务,他不会在呼叫事实表上,并且他不会在这个“每个提供商的客户端”查询上进行操作。
我一直在想,要做到这一点的一种方法是创建一个角色扮演维度,一个客户维度的视图,并将其直接添加到提供者维度,以便执行像这样的查询。这将是这样的:
(Dimension)Client ---> (Fact)Call <--- (Dimension)Provider <--- (Dimension)View Client
当然,使用这种方法,用户必须非常小心,以不使用与事实表这个View Client的尺寸,因为它会重复的事实行。
那么,这是我需要使用着名的非事实型事实表的情况之一吗?
什么是正确的方法来做到这一点?
谢谢!