【问题标题】:The aggregate function "Aggregate" cannot be used in a report that contains any filters不能在包含任何过滤器的报表中使用聚合函数“聚合”
【发布时间】:2012-07-08 14:12:44
【问题描述】:

我知道我们不能将聚合函数用于矩阵中的过滤器。

这是 AdventureWorks 中的情况。我有三个级别:

  1. 类别
  2. 子类别
  3. 产品

还有 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


【解决方案1】:

您可以将聚合加入数据集,然后将其用作过滤器吗? (显然我需要 50 声望才能发表评论)

例如:

 SELECT item, quantity, aggregateQuantity
 FROM TABLE T1
 LEFT JOIN (SELECT item, SUM(Quantity) AS aggregateQuantity FROM TABLE) T2
 ON T1.item = T2.item

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多