SSAS中度量组之间的父子关系

时间:2012-10-26 18:16:42

标签: ssas parent-child mdx olap dimensions

我很难弄清楚我应该如何在SSAS中的度量组之间实现父子关系。基本上我只是尝试重新创建一个标准的SQL连接,这样我就可以在我的子组中使用键时在我的父组中查找度量。

例如,假设我有以下维度:

  • 家长
  • 儿童(FK:ParentID)
  • 时间

我有以下措施组

  • ParentFact(键:ParentID,TimeID - 与父项相关的度量)
  • ChildFact(Keys:ChildID,TimeID - 与孩子相关的度量)

我没有为任何事实表创建任何特定尺寸。

最后,我只想运行这样的查询,列出我的Child表中与我父表中的度量相关联的度量:

SELECT
    {
        [ChildMeasure]
        , [ParentMeasure]        
    } ON COLUMNS
    , [Child].Children ON ROWS
FROM
    [MyCube]
WHERE
    [Time].[100]

当此查询运行时,正确列出子行以及时间ID 100的相应度量值。不幸的是, ParentMeasure 完全相同,并且似乎是此值的聚合时间ID为100的所有父母。我希望此列显示每个孩子在时间ID 100的相关父母的价值。

我在这里做错了什么?我是否需要为每个FactTable创建FactDimensions,并以某种方式将它们联系起来?我应该在我的数据源视图中创建父和子之间的关联吗?这会使它成为Snowflake架构,我认为我应该避免这种架构吗?

作为旁注,我的ChildFact表实际上包含ParentID作为度量之一,因为它位于数据源的关系表中(可能是由于DB开发人员之前的一些非规范化工作)。我应该删除在我的事实表中实际为FK的任何措施,还是以某种方式需要我想要做的事情?

2 个答案:

答案 0 :(得分:2)

由于明显的粒度问题,我认为您不应该尝试创建单个Fact表。

我认为您应该使用现有的FK列在您的Child Fact和Parent Dimension之间的Cube定义中添加Dimension Relationship。

将ParentID作为衡量标准的唯一有效用途可能是获得一个不同的计数。

答案 1 :(得分:1)

这里没有必要创建两个事实。

  1. 创建单个事实表(ParentID,ChildID,TimeID)
  2. 创建3维DimParent,DimChild,DimTime
  3. 事实表的FK将参考相应的维度表
  4. 此外,请检查属性关系如何使用维度
  5. 切割事实