【发布时间】:2010-04-21 10:41:09
【问题描述】:
我知道如何将低于某个阈值的图表切片/条组合成一个条。但是,如果图表中显示的数据包含大量小切片,则收集低于 5% 左右的切片会产生巨大的“其他”切片/条。另一方面,如果我只收集低于非常小的阈值的切片,则图表可能包含太多无法读取的数据。
所以,我想为切片数量设置一个硬性上限,最多显示 n 个最大切片并将其他所有内容收集到一个“其他”切片中。
如何使用 SSRS 2008 做到这一点?
谢谢,
阿德里安
【问题讨论】:
我知道如何将低于某个阈值的图表切片/条组合成一个条。但是,如果图表中显示的数据包含大量小切片,则收集低于 5% 左右的切片会产生巨大的“其他”切片/条。另一方面,如果我只收集低于非常小的阈值的切片,则图表可能包含太多无法读取的数据。
所以,我想为切片数量设置一个硬性上限,最多显示 n 个最大切片并将其他所有内容收集到一个“其他”切片中。
如何使用 SSRS 2008 做到这一点?
谢谢,
阿德里安
【问题讨论】:
我很确定这可以在 SSRS 中完成,而无需重写您的查询。我认为重写您的查询会更容易。不过,鉴于你的参数,我会继续。
我认为这需要您进行一些认真的实验。查看http://www.ssw.com.au/ssw/standards/rules/rulesToBetterSQLReportingServices.aspx 的第 17 点和第 18 点,看看是否有帮助。他们展示了一种根据行中的值设置图表比例的好方法。看来您可以使用 IIF(Max(MyColumn.Value) > @MyLimit, @MyLimit, Max(MyColumn.Value))
这让你成功了一半,因为现在你知道你的极限了。现在的诀窍是将低于某个比例的所有值填充到“其他”存储桶中。这也可以通过一些创造性的 IIFing 来解决:
Set the value for the label column = IIF(MyValueColumn.Value < @Threshold, "Other", MyLabelColumn.Value)
就像我说的那样,您必须进行一些实验,并且重写查询可能会更容易,但如果您只使用 SSRS,那么至少您有一个地方可以开始寻找。
【讨论】:
我通常会在我的查询中处理这种情况。 (我从没用过2008所以我不确定它是否有更好的功能)
选择到临时表顶部的 N 个类别/切片。
插入名为“其他”的临时表类别,其值等于临时表中所有类别的总和。
【讨论】:
在 SSRS 设计器中处理此类问题不是一个好主意。在大多数情况下,这类问题在存储过程或数据库中的其他查询中处理。
如果您有其他情况,最好在 Designer 上控制数据,但在这种情况下,您会将大量浪费数据发送到服务器,这将需要很长时间来处理,用户应该等待。但是如果您在数据库中执行此操作,用户将比您的情况更早地面对他/她的报告。这就是为什么你需要在 DB 上处理它。
【讨论】: