【问题标题】:Parent Child Relationships Between Measure Groups in SSASSSAS 中度量组之间的父子关系
【发布时间】:2012-10-17 00:47:48
【问题描述】:

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

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

  • 家长
  • 孩子(FK:ParentID)
  • 时间

我有以下度量组

  • ParentFact(键:ParentID、TimeID - 随着时间的推移与父级相关的度量)
  • ChildFact(键:ChildID、TimeID - 随着时间的推移与孩子相关的度量)

我没有为我的任何事实表创建任何特定维度。

最后,我只想运行这样的查询来列出我的子表中的度量值,这些度量值与我的父表中的度量值相连:

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

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

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

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

【问题讨论】:

    标签: ssas parent-child mdx olap dimensions


    【解决方案1】:

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

    我认为您应该使用现有的 FK 列在您的多维数据集定义中,在您的子事实和父维度之间添加一个维度关系。

    可能将 ParentID 用作度量的唯一有效用途是获取 Distinct Count。

    【讨论】:

      【解决方案2】:

      这里不需要创建两个事实。

      1. 创建单个 Fact 表(ParentID、ChildID、TimeID)
      2. 创建 3 维 DimParent、DimChild、DimTime
      3. Fact 表的 FK 将参考各自的维度表
      4. 另外,检查属性关系如何用维度切片事实

      【讨论】:

      • 通过创建一个单一的事实表,这不会在我的父母和孩子之间建立一对一的关系吗?当我按父 ID 分组时,这将如何影响父事实的聚合?
      • 在这种情况下,您必须按 ParentID、ChildID 分组。
      猜你喜欢
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多