维度建模 - 模糊关系

时间:2016-08-10 09:59:38

标签: powerbi dimensional-modeling

我一直试图解决一个问题,到目前为止,我还没能达到我所说的最佳解决方案。 我有一个维度(功能)需要在其他2个维度(操作和会话)中引用,而这些维度又是从同一个事实表(UserAction)引用的。这会产生歧义,我无法完成架构:

Ambiguous Relations (注意:模型的剪辑,而不是整个事情) (包括桥表,以显示具有多对多关系的模型中的一些复杂性)

我认为问题可能在于Dim_Features在技术上在两个维度之间具有不同的含义,但我仍然试图使用它作为相同的?这意味着:

  • 操作属于此功能/功能区域
  • 会话有此功能/功能区可用(拥有)

我需要完成的是能够通过Sessions过滤/切片Fact_UserActions,其中某些功能可用/不可用,然后分析如下内容:

  • 功能' A'使用哪些功能?是拥有的(如某些特征之间的相关性,以及其他被使用的特征)?
  • 拥有功能的用户有多少未使用过它?
  • 功能使用的频率是多少? (受拥有它的会话数量的限制,即实际可以使用的会话)

关于我可能做错了什么,或者我如何改进模型的任何想法?

编辑:如果它有所帮助,我们想摆脱这种情况的一种表格如下:

enter image description here

我们可以看到一个特征对整个人口以及拥有它的人口的影响。

2 个答案:

答案 0 :(得分:5)

我认为你的问题是你的工作是错误的。关于星型模式的标准Kimball建议总是找到绝对最低的粒度,因为你总是可以聚合。

查看您希望能够回答的所有问题 - 它们都是关于功能的使用,但您用于分析功能的事实表不在功能使用级别。存在Bridge表以尝试解决此问题。

重要的是要记住,在绝大多数情况下,您的维度应该仅通过事实表间接相关。有时您需要Bridge表,但相对较少。

很难在不知道它如何适应模型的其他部分的情况下提出建议的架构,但请考虑以下因素:

  • 将Fact_UserAction替换为Fact_FeatureUsage。
  • 在Fact_FeatureUsage中有action_id,session_id和feature_id。
  • 摆脱你的桥牌桌。

答案 1 :(得分:1)

我会删除与Dim_Features的关系,然后隐藏它。

然后我将创建两个新表(在Report或Data视图中,转到Modeling功能区并单击New Table)。每个DAX表达式都类似于:

Features (Actions) = 'Dim_Features'

Features (Sessions) = 'Dim_Features'

现在您有2个Dimension表的独立副本,您可以在Relationships窗口中为每个副本创建关系。