report builder 3.0-如何使用大型数据集运行此报表?

vbopmzt1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(348)

我是一个新的开发报告与大量的数据,所以我正在寻找一些建议与我的问题。
我正在开发一个包含6个参数的ssrs报告。每个参数都有自己的数据集,为参数指定一个不同的值列表。
用户可以为每个参数选择任意多的值,除了1(日期)。
查询看起来像;

SELECT [CURR].[PERIOD]
,[CURR].[PERIOD_MTD]
,[CURR].[CATEGORY1]
,[CURR].[CATEGORY2]
,[CURR].[CATEGORY3]
,[CURR].[CATEGORY4]
,[CURR].[CATEGORY5]
,[CURR].[CALCULATION1_ITD]
,[CURR].[CALCULATION2_ITD]
,[CURR].[CALCULATION3_ITD]
,[CURR].[CALCULATION4_ITD]
,[CURR].[CALCULATION1_MTD]
,[CURR].[CALCULATION2_MTD]
,[CURR].[CALCULATION3_MTD]
,[CURR].[CALCULATION4_MTD]
FROM [BIG_TABLE] [CURR] LEFT OUTER JOIN
[BIG_TABLE] [PREV M]
    ON [CURR].[PERIOD_MTD] = [PREV M].[PERIOD]
    AND [CURR].[CATEGORY1] = [PREV M].[CATEGORY1]
    AND [CURR].[CATEGORY2] = [PREV M].[CATEGORY2]
    AND [CURR].[CATEGORY3] = [PREV M].[CATEGORY3]
    AND [CURR].[CATEGORY4] = [PREV M].[CATEGORY4]
    AND [CURR].[CATEGORY5] = [PREV M].[CATEGORY5]
WHERE [CURR].[PERIOD] = @YYYYMM
AND [CURR].[CATEGORY1] IN (@PARAMETER1)
AND [CURR].[CATEGORY2] IN (@PARAMETER2)
AND [CURR].[CATEGORY3] IN (@PARAMETER3)
AND [CURR].[CATEGORY4] IN (@PARAMETER4)
AND [CURR].[CATEGORY5] IN (@PARAMETER5)

这就是我面临的问题;1参数有一个超过5500个值的独特列表,用户可以从中选择。当所有的值都被选中时,我注意到参数字段不像其他字段那样填充(下图)。

运行报告时,出现以下错误:

这个消息非常模糊,但我将它隔离为这样一个事实:报表将在这个参数中使用较少的值运行,但不是所有的值。
我不知道还能尝试什么。我认为这可能是通过主数据集获取大量数据的问题。
额外信息:
通过与sharepoint的共享连接访问数据源
为此报表查询的表没有索引。我想知道这是否重要,因为这个表大约有26.5行。

yruzcnhs

yruzcnhs1#

我认为你的方法是错误的。
如果你给一个用户展示了一个5000多个项目的列表,我猜他们要么选择少量的项目,要么想选择所有的项目,那么他们不太可能坐在那里从列表中选择100个项目。
如果是这样的话,我建议在列表中添加一个“all”选项( UNION 然后像这样修改查询。。。

WHERE [CURR].[PERIOD] = @YYYYMM
AND (@PARAMETER1 = 'ALL' OR [CURR].[CATEGORY1] IN (@PARAMETER1))
...
...

您可能还需要阅读前面的so问题和ms文章。
sql server中的“in”子句限制
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/in-transact-sql?view=sql-server-ver15

相关问题