子报表需要参数时创建快照报告?

时间:2013-06-07 19:30:18

标签: reporting-services

我的情况就是这样 - 我正在使用SSRS创建一个"级联"报告集。顶级报告从捕获我们的部署/发布活动的表中提取所有数据。此数据包括执行发布的属性,该属性所属的组织,发布的计划和实际开始和结束时间(及其组成部署)等,以及报告中的I按时间窗口(会计年度,季度,然后是月份)汇总数据。因此,在顶层,用户会看到一份报告,显示我们执行了多少部署和发布,预计需要多长时间,以及他们实际花了多长时间,在过去的十二个月中再次按财政年度分组,然后是Quarter,而不是月。

现在,用户希望看到的下一个详细信息是给定月份。当他或她点击链接以运行该特定子报告时,他们现在可获得针对该特定月份的按组织分组的相同信息(部署数量,发布数量,计划持续时间和实际持续时间等)。

这就是我的困境 - 初始报告需要很长时间才能呈现。我想创建快照报告以减少此渲染时间,但我的子报告使用顶级报告中的月份作为参数。换句话说,当我点击子报告的链接时,SSRS中的操作设置说使用我点击的月份作为参数来生成子报告,子报告中的查询过滤掉了具有以下查询条件的参数:

AND FiscalQuarter IN(@Quarter)

所以,报告工作正常,但我想知道 - 是否有一些方法可以让所有季度的所有数据都进入快照报告中的子报告,然后只生成该快照但过滤了我从顶级报告中作为参数传递的季度值?

2 个答案:

答案 0 :(得分:3)

是的,您可以通过为子报告创建所有值的快照。 并且子报表上定义的参数应该是数据集过滤器而不是查询参数。

现在,当您将参数从主报表传递到子报表时,它将相应地在子报表快照上对其进行过滤,而无需执行昂贵的sql

答案 1 :(得分:1)

唉,报告服务并不能满足您的需求。 Caching reports会根据参数值的不同组合创建报告的缓存版本,类似的情况适用于cached datasets

你似乎还有两个选择:

  1. 使用缓存的数据集,让子报表使用缓存的数据集,但只有在检索到数据后才使用该参数进行过滤(例如在Tablix中)
  2. 采用更加面向数据库的缓存或性能增强策略,例如查询的索引视图