【发布时间】:2019-07-12 16:07:54
【问题描述】:
我正在尝试通过 SSRS 设计一个Matrix 报告,以在另一列(即数据透视表)中为一系列动态值聚合一列。该数据仅包含超过 1300 万行,因此它是一个大型数据集。
当通过 T-SQL 对此数据执行 PIVOT 时,它能够在大约 1 分钟内聚合所有这些行,但是当让 SSRS 通过 Matrix 报告为我进行数据透视时,我尝试在我的 PC 上预览报告时出现 OutOfMemory 异常。
返回数据集本身的查询并不复杂,很简单:
SELECT
ID
,Test_Ref
,Data_issue_indicator
FROM MyTable
我们尝试对Test_Ref 中的值求和Data_issue_indicator(可以是1 或0),其中有一个动态范围的值可以聚合;换句话说,我们不能使用标准的Tablix 报告,因为如果将新的Test_Ref 值引入数据集中,列的数量可能随时增加。
我使用的是 Visual Studio Enterprise 2019,我的电脑是 Windows 10,i7-8850H,内存为 16GB。
有解决此问题的建议吗?
【问题讨论】:
-
您是否尝试过聚合数据集的数据,而不是让报表完成所有工作?您可以保持报表设计相同(可能)只需将数据集查询更改为
SELECT Test_Ref, SUM(Data_issue_indicator) AS Data_issue_indicator FROM myTable GROUP BY Test_Ref -
@AlanSchofield 这在将返回的行数从 ~13m 减少到 ~6m 方面略有帮助,但这对于 SSRS 来说仍然难以处理;至少在我的环境中
标签: sql-server reporting-services visual-studio-2019