【发布时间】:2012-07-08 14:12:44
【问题描述】:
我知道我们不能将聚合函数用于矩阵中的过滤器。
这是 AdventureWorks 中的情况。我有三个级别:
- 类别
- 子类别
- 产品
还有 1 个 Calc_Member:
=With MEMBER Calc_Member as [Measures].[Internet Average Sales Amount]
实际上:
[Measures].[Internet Average Sales Amount]=
[Measures].[Internet Sales Amount]/[Measures].[Internet Order Count]
我希望层次结构中的每个级别都有不同的聚合。对于子类别和产品,Calc_Member 的公式就像我之前提到的那样:
[Measures].[Internet Average Sales Amount]
但是对于类别级别,我想要相关子类别的平均值:
WITH MEMBER Calc_Member AS
Average(existing [Product].[Subcategory].[Subcategory].members
, [Measures].[Internet Average Sales Amount])
在分析服务中这工作正常,但我在报告服务中有一个基于此数据集的报告:
- 类别
- 子类
- 产品
- Calc_member
在 ssrs 中,我使用包含三个行组的矩阵,并为每个组添加总计。对于类别级别 1,希望在 ssrs 中使用聚合函数(使用在分析服务中定义的 Formlula)并且它再次正常工作。
但如果我想对某些成员(例如类别、子类别、产品)使用过滤器 它抛出这个错误:
聚合函数“Aggregate”不能在包含任何过滤器的报告中使用
而且这个错误也是可以接受的,但我不明白的是:如果我在 Matrix1 中使用聚合函数并且在 Matrix2 中使用过滤器,它也会抛出错误。
为什么?
【问题讨论】:
-
很难按原样理解您的问题。也许您可以编辑它并添加更多代码示例,告诉我们您尝试了什么,为什么它不起作用等等?就目前而言,我们无法真正帮助您。
-
感谢编辑。我已经尝试对其进行更多更新,希望不会改变其含义。尽管如此,这个问题还是有点难以理解——可能是语言障碍?也许其他人可以看到发生了什么并为您解答...
-
嗨 Jeroen 非常感谢您的关注。忘记我之前的问题。如果可能,请查看此问题。在 ssrs 中放置一个矩阵并在其中使用聚合函数。然后在里面放另一个矩阵和使用过滤器。之后你可以看到错误谢谢。
-
FWIW 我已经放弃对 SSAS 使用 SSRS。我认为这是一个构思和执行都很糟糕的实现,并且有很多这样的陷阱和陷阱。
标签: reporting-services filter matrix ssrs-2008 aggregate