私は14のサブレポートを持つSSRSに関するレポートを持っています。これらのサブレポートはすべて、同じストアドプロシージャから読み込みますが、(異なる計算のために)異なる方法でデータを表示します。私がSPを書いた方法は、次の通りです。SSRS - 複数のデータセットでのテンポラリテーブルの再利用
IF OBJECT_ID('tempdb.dbo.#blabla') IS NOT NULL
BEGIN DROP TABLE #blabla END
SELECT a,b,c,d,e
INTO #blabla
WHERE a='bla'
IF @type = 1 --report 1
BEGIN
SELECT ....
END
IF @type = 2 --report 2
BEGIN
SELECT .....
END
なども同様です。
私は、ストアドプロシージャの先頭に3つの一時テーブルを作成します。これらのテーブルは、変換するデータを供給するテーブルです。問題は、各サブレポートでは、テーブル自体が再作成され続けるため、レポートの作成に時間がかかることです。ストアドプロシージャの開始時に作成されたテーブルを再利用する可能性のある回避策はありますか?
データはどのくらいの頻度で変更されますか?これが夜間のバッチで行われた場合、おそらく、一時テーブルの代わりに通常のテーブルを作成し、夜間のバッチにデータを置くことができますか?次に、tempsを作成する代わりに、これらのテーブルにSPの外観を表示します。 – steenbergh
これはETLプロセスとして行われていません。一時表は永続表から抽出されたものです(医学的な主張であるため、何百万と何百万行もあります)。テンポは永久テーブルへの読み込みを最小限にする方法です。レポートに日付パラメータが設定されているため、永続的にすることはできません。 – raltandi