我在分析服务维度中有一个父子属性关系,比如说[Dim].[Child]
是一个子属性[Dim].[Parent]
,我有一个查询,它返回集合
UNION(
[Dim].[Parent].Members * [Dim].[Child].Members,
[Dim].[Parent].[ALL] * [Dim].[Child].Members
)
在轴 1 上和轴 0 上的一些输出。在管理工作室中运行时查询工作正常。
现在我正在尝试在 Reporting Services 中制作一个带有[Dim].[Child]
x 轴和Aggregate(some_output)
Y 轴的图表。我希望在 x 轴上看到子成员,并为所有父母(在这种情况下只是一个)汇总输出,即从行中获取的数据{ [Dim].[Parent].[ALL], [Dim].[Child].&[TheChildID] }
。如上所述,查询确实返回了包含正确数据的这一行。
但是,Aggregate
这种情况下的函数返回 NULL。当使用父子属性并将子属性放在 X 轴上时,此行为始终存在。将子项放入 tablix 行并在列中添加聚合输出时也会发生同样的情况。报告服务器似乎知道聚合只会发生在一个成员身上并拒绝这样做。
如果我进行另一个相同的查询,只需输入具有不同关系的属性,例如[Time].[Month]
and [Time].[DayOfMonth]
,聚合就可以正常工作,因为这一次同一天可能属于很多个月,并且需要聚合数据。
现在我不知道为什么会发生这种情况 - Reporting Server 是否准确地查询 OLAP 数据源以找出关系或什么?或者在返回所有行的查询中是否有一些魔法,我不知道?有效和无效的案例的唯一相关性似乎是关系。
编辑:玩了更多之后的一些观察:如果我从查询中删除该行,则报告有效[Parent].Members * [Child].Members
,强制它只检索[Parent].ALL * [Child].&[ID]
行。该图表现在已经汇总了数据,但显然,我不再有个人成员了。