SQLレポートレイヤーとプレゼンテーションレイヤーを分離しますか?
-
26-10-2019 - |
質問
SQL Serverレポートサービスを使用しています。私のクエリのほとんどは、単にPDFとしてエクスポートされるレポートとして実行されます。
実際のSQLクエリで実行する必要がある場合、どのタイプの計算が行われ、どのタイプがSSRS IDE(Business Intelligence Studio)を使用して計算するかを知りたいと思います。
たとえば、最近の3か月の販売平均が必要な12か月の販売レポート(12か月)がある場合、その平均はどこで計算する必要がありますか?
ほとんどの計算/集約はプレゼンテーションレイヤーで実行する必要がありますか?例外はありますか?
解決
これは2つの方法で見ることができます。
- ビジネスロジックをどこに置きますか
- 計算には時間が必要であり、より効率的です
これらのいずれかに対する答えは「依存する」です。トレンドを表示した12か月のレポートの例では、データを取得するために使用されるロジックを変更するパラメーターがいくつかある場合、SQLストアドプロシージャで可能な限り実行するように誘惑されます(平均)そして、レポートをかなり「愚か」にして、結果を表示するだけです。レポートが非常に単純な場合、またはロジックがそのレポートのみに固有の場合、レポートでは機能する可能性があります。
再利用性のために、私はSQLで物事を行うことを好みます。複雑なディスプレイ(ヒートマッピング、グラフなど)の場合、レポートではおそらく優れています。
他のヒント
レポートのロジックをレポートに保管してください。 SQL Serverはデータを提供しますが、レポートでカスタマイズされたロジックを保持することをお勧めします。
私は、計算のためにレポートをデータベースに往復させることから離れています。ストアドプロシージャのグループ化と注文がレポートレイアウトと一致する場合、SSRSは集約計算を行うのにかなり効率的です。