簡體   English   中英

Report Builder 3.0 - 如何使用大型數據集運行此報告?

[英]Report Builder 3.0 - How can I run this report with a large data set?

我是使用大量數據開發報告的新手,所以我正在尋找一些關於我遇到的問題的建議。

我正在開發一個包含 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 個參數有一個包含 5,500 多個值的不同列表,用戶可以從中進行選擇。 選擇所有值后,我注意到參數字段不像其他值那樣填充(下圖)。

參數圖

報告運行時,我收到以下錯誤:

錯誤信息

此消息非常含糊,但我將其隔離為報告將在此參數中使用較少值運行的事實,但不是全部。

我不確定還能嘗試什么。 我認為這可能是通過主數據集獲取大量數據的問題。

額外的信息:

通過到 SharePoint 的共享連接訪問數據源

為此報告查詢的表沒有索引。 我想知道這是否重要,因為該表大約有 26.5mill 行。

我建議你的方法是錯誤的。

如果您向用戶展示一個包含 5000 多個項目的列表以供選擇,我猜他們要么會選擇其中的一小部分,要么想要 select 所有人,他們不太可能會坐在那里並從中選擇 100 個項目一個列表。

如果是這種情況,那么我建議在列表中附加一個“ALL”選項( UNION到您的原始列表中),然后像這樣修改查詢......

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

您可能還想閱讀這些以前的 SO 問題和 MS 文章。

Sql 服務器中的“IN”子句限制

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/in-transact-sql?view=sql-server-ver15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM