Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SSR中创建报告的最佳实践是什么?以所有可能的方式分解相同的数据?_Sql Server_Performance_Reporting Services_Ssms - Fatal编程技术网

Sql server 在SSR中创建报告的最佳实践是什么?以所有可能的方式分解相同的数据?

Sql server 在SSR中创建报告的最佳实践是什么?以所有可能的方式分解相同的数据?,sql-server,performance,reporting-services,ssms,Sql Server,Performance,Reporting Services,Ssms,我需要创建SSRS报告,用户需要以多种方式查看数据(分组、比较等)。使用VisualStudio2010。SQL server 2012 为此,我使用一个存储过程,将数据转储到cte中,然后从那里进行所有分组 我的问题是: 是否有任何方法可以将数据从一个存储过程转储到#tentable,然后从该#tentable转储到多个视图(按我需要的方式分组),然后在SSRS中从不同的视图(使用数据集作为视图)查询该数据 诸如此类: CREATE PROCEDURE ProcName (

我需要创建SSRS报告,用户需要以多种方式查看数据(分组、比较等)。使用VisualStudio2010。SQL server 2012

为此,我使用一个存储过程,将数据转储到cte中,然后从那里进行所有分组

我的问题是: 是否有任何方法可以将数据从一个存储过程转储到#tentable,然后从该#tentable转储到多个视图(按我需要的方式分组),然后在SSRS中从不同的视图(使用数据集作为视图)查询该数据

诸如此类:

CREATE PROCEDURE ProcName
    (   
        @DateFrom datetime, 
        @DateTo datetime
    )
AS
BEGIN

CREATE #TempTable 
INSERT INTO #TempTable
SELECT  Col1,
        Col2,
        Col3,
        col4...
FROM Table1 INNER JOIN Table2

CREATE VIEW MyView1
AS
SELECT  Col1,
        Col2
GROUP BY Col1
FROM    #TempTable

CREATE VIEW MyView2
AS
SELECT  Col3,
        Col4
GROUP BY Col3
FROM    #TempTable

CREATE VIEW MyView3
AS
SELECT  Col1,
        Col4
GROUP BY Col2
FROM    #TempTable

END -- End of SP 
GO 
就性能而言,在用户需要以所有可能的方式存储数据的情况下,创建报告的最佳方式是什么?
现在我正在尝试在SSMS中进行所有计算,然后将这些数据带到SSRS中。性能很好,但有时我有多达100列。事情变得一团糟

首先,SSRS不是一个非常动态的环境。很难预测被使用的人想要突破数据的每一个方面。所以我的建议是在Excel中提供数据的PowerPivot作为替代方案。这样,他们就可以轻松地添加和删除行/列分组,并查看小计。切片机也非常方便

更具体地说,对于您的问题,我认为通常最好的做法是让存储过程只返回所有原始数据。SSRS非常擅长对数据进行分组和排序。这将减少服务器的压力,并需要稍长的处理时间。当然,如果您在运行时遇到太多需要处理的问题,您将不得不重新平衡工作负载或分配更多资源


有时候你必须要有创造力。例如,我有一个将近300列、超过10万行的报告。通常,运行或导出需要10分钟以上。因此,我打开了缓存,并安排订阅每天将其导出为.csv格式。这样,数据就可以在Excel中打开,报告可以在一天中快速重新运行

我不确定有没有好办法。我以前也做过类似的工作,并将许多参数从报表传递到数据集。这些参数用于构建动态sql,所以我可以完全控制分组排序等,但这很混乱。老实说,SSRS并不是这方面的下注工具。如果你不依赖SSR,那么看看其他替代方案,PowerBI可以非常快速地创建矩阵报告,这将完成这项工作。我认为公司不会为这样的东西付费,因为这是免费的version@Oleg您需要的是一个多维数据集。@Canadean\u PowerBI是否可以处理存储过程并具有最终用户可以选择的参数?谢谢