2017-02-24 28 views
0

在我們的組織中,我們創建了許多用戶/經理請求的報告,並將其發佈在SSRS網頁上。我應該將自己的邏輯放在基礎SQL查詢中還是SSRS報告中?

我們傾向於創建一個返回所需結果的SQL過程,並且我們在SSRS數據集中調用該過程。然後,我們使用SSRS將它呈現在一個漂亮的表格中,並傾向於創建分組等,並將圖表放入等等,以便它看起來對用戶來說是可呈現的。

任何「計算列」,如「年齡」(將從出生日期和當前日期計算)或「平均銷售額」(根據總金額/銷售數量計算)在基礎SQL過程。

SSRS具有許多功能,可以在SSRS報告中計算這些計算出的列。

我的問題確實是「在基礎數據集中創建計算列與在SRRS中創建計算列有什麼優勢?」有什麼樣的表現衝擊?我們應該考慮其他因素嗎?

回答

0

我會想象,除非您正在進行大量龐大的計算,否則性能並不是一個巨大的問題,我無法對此給予任何評論。

優點大多來自於允許報表設計者通過在數據集中創建字段來創建可重複使用的表達式,而不必在報表本身中創建這些表達式。

這更容易維護和更容易查看。在SSRS 2008或更高版本中,您可以在每個佔位符中看到該字段的名稱 - 這使得設計人員可以更輕鬆地計算每個字段的結果。

如果使用表達式,那麼您在這些框中看到的所有內容都是<<expr>>,如果您在多個位置使用同一表達式,則需要在所有這些位置更新表達式,如果您決定更改該值計算。

它只是DRY原理的延伸。

+0

感謝,如果我理解正確的話,好像你的答案是基於一個開發人員創建一個數據集和另一名開發人員創建報告?這使得在這方面的更多的意義,像你說的數據集開發人員可以保證計算的數據集末尾正確。 在我們的組織,該數據集往往是同一個人作爲報表開發人員這也許是爲什麼我沒有想到這樣的說法 – SEarle1986

0

當您將關係數據庫作爲源處理並且您可以控制要執行的SQL返回數據集時,我通常會建議將計算,數據類型轉換等邏輯放在SQL中,從而卸載對數據庫引擎的處理通常比報表服務器更有效。

我通常希望報表成爲一個「表示層」,它將格式化,佈局,分組和排序應用於數據。創建底層數據集的業務邏輯封裝在數據庫上運行的查詢或過程中。 SSRS肯定不會包括很多功能,使數據的操作,但我通常只使用這些在數據源本身不支持他們。但是,如果我是建設一個報告,其中有一些動態的能力(例如報告有一個參數,可以讓用戶控制分組如何在報告中做了),那麼它可能是有意義的做SSRS計算,以更好地利用緩存。

相關問題