我一直试图解决一个问题,到目前为止,我还没能达到我所说的最佳解决方案。 我有一个维度(功能)需要在其他2个维度(操作和会话)中引用,而这些维度又是从同一个事实表(UserAction)引用的。这会产生歧义,我无法完成架构:
(注意:模型的剪辑,而不是整个事情) (包括桥表,以显示具有多对多关系的模型中的一些复杂性)
我认为问题可能在于Dim_Features在技术上在两个维度之间具有不同的含义,但我仍然试图使用它作为相同的?这意味着:
我需要完成的是能够通过Sessions过滤/切片Fact_UserActions,其中某些功能可用/不可用,然后分析如下内容:
关于我可能做错了什么,或者我如何改进模型的任何想法?
编辑:如果它有所帮助,我们想摆脱这种情况的一种表格如下:
我们可以看到一个特征对整个人口以及拥有它的人口的影响。
答案 0 :(得分:5)
我认为你的问题是你的工作是错误的。关于星型模式的标准Kimball建议总是找到绝对最低的粒度,因为你总是可以聚合。
查看您希望能够回答的所有问题 - 它们都是关于功能的使用,但您用于分析功能的事实表不在功能使用级别。存在Bridge表以尝试解决此问题。
重要的是要记住,在绝大多数情况下,您的维度应该仅通过事实表间接相关。有时您需要Bridge表,但相对较少。
很难在不知道它如何适应模型的其他部分的情况下提出建议的架构,但请考虑以下因素:
答案 1 :(得分:1)
我会删除与Dim_Features的关系,然后隐藏它。
然后我将创建两个新表(在Report或Data视图中,转到Modeling功能区并单击New Table)。每个DAX表达式都类似于:
Features (Actions) = 'Dim_Features'
Features (Sessions) = 'Dim_Features'
现在您有2个Dimension表的独立副本,您可以在Relationships窗口中为每个副本创建关系。