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