1

我很难弄清楚我应该如何在 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 的任何措施,还是我想要做的事情以某种方式需要?

4

2 回答 2

2

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

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

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

于 2012-11-02T02:22:00.527 回答
1

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

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