レポート ビルダーのページ分割されたレポート パラメーター

適用対象: SQL Server 2016 (13.x) Reporting Services 以降 SharePoint

適用対象: SQL Server 2016 (13.x) Reporting Services 以降

この記事では、ページ分割されたレポート パラメーターの一般的な使用方法、設定できるプロパティ、その他について説明します。 レポート パラメーターを使用すると、レポート データの制御、他のレポートとの関連付け、およびレポートの表示方法の変更が可能になります。 レポート パラメーターは、Report Builder と Report Designer で作成するページ分割されたレポートで使用できます。 また、SQL Server Mobile Report Publisher で作成するモバイル レポートでレポート パラメーターを使用することもできます。 詳細については、「ページ割り付けレポートのレポート パラメーターのコンセプト (Report Builder)」を参照してください。

Note

SQL Server Mobile Report Publisher は、SQL Server Reporting Services 2019 より後の SQL Server Reporting Services のすべてのリリースで非推奨です。 SQL Server Reporting Services 2022 以降および Power BI Report Server で廃止されました。

レポートにパラメーターを追加する方法の詳細については、「チュートリアル: レポートへのパラメーターの追加 (Report Builder)」を参照してください。

パラメーターの一般的な用途

パラメーターの一般的な用途には以下が含まれます:

改ページ調整されたレポート データおよびモバイル レポート データの制御

Report Builder と Report Designer には、データの種類に基づいてデータをフィルター処理するためのオプションが用意されています。

  • 変数が含まれるデータセット クエリを記述して、データ ソース側で改ページ調整されたレポート データをフィルター処理する。

  • 共有データセットのデータをフィルター処理する。 ページ割り付けレポートに共有データセットを追加する場合、クエリを変更することはできません。 レポート パラメーターを作成して、そのパラメーターへの参照を含むデータセット フィルターをレポートに追加することができます。

  • SQL Server モバイル レポート内で共有データセットのデータをフィルター処理する。 詳細については、「 SQL Server Mobile Report Publisher を使用してモバイル レポートを作成する」をご覧ください。

  • ユーザーが値を指定して改ページ調整されたレポートのデータをカスタマイズできるようにする (2 つのパラメーターを用意して売上データの開始日と終了日を指定できるようにするなど)。

パラメーターを使用してメイン レポートをドリルスルー レポート、サブレポート、およびリンク レポートに関連付けます。 一連のレポートをデザインするときは、特定の情報を得るために各レポートをデザインできます。 各レポートでは、関連する情報について、さまざまな表示形式や詳細レベルで情報を示すことができます。 相互に関連する一連のレポートを提供するには、対象となる各レポート上のデータのうち、関連性を持つデータに対して、パラメーターを作成します。 詳細については、「ページ割り付けレポートのドリルスルー レポート (Report Builder)」、「ページ割り付けレポートのサブレポート (Report Builder)」、および「リンク レポートを作成する」を参照してください。

複数のユーザー向けにパラメーター セットをカスタマイズする。 たとえば、売上レポートに基づく 2 つのリンク レポートをレポート サーバーに作成して、 1 つのリンク レポートでは、営業担当者に対して事前定義済みのパラメーター値が使用されます。 2 番目のリンク レポートでは、営業マネージャーに対して事前定義済みのパラメーター値が使用されます。 どちらのレポートも同じレポート定義を使用します。

レポートのプレゼンテーションの変更

レポート ビルダーには、プレゼンテーションを変更するために使用できるツールが用意されています。

  • レポートのレンダリングをカスタマイズするには、URL 要求を使用してレポート サーバーにコマンドを送信します。 詳細については、「URL アクセス (SSRS)」および「URL 内でレポート パラメーターを渡す」を参照してください。

  • レポートの外観をカスタマイズできるように、ユーザーに値を指定するオプションを指定できます。 (ブール型のパラメーターを用意して、テーブルの入れ子になった行グループを展開するか折りたたむかを指定できるようにするなど)。

  • 式にパラメーターを含めることで、ユーザーがレポート データと外観をカスタマイズできるようにします。 詳細については、「ページ割り付けレポートのパラメーター コレクションの参照 (レポート ビルダー)」を参照してください。

パラメーターを指定してレポートを表示する

パラメーターを持つレポートを表示する場合、値を対話的に指定できるように、[パラメーター] ウィンドウに各パラメーターが表示されます。 次の画像は、@ReportMonth、@ReportYear、@EmployeeID、@ShowAll、@ExpandTableRows、@CategoryQuota および @SalesDate というパラメーターを持つレポートの [パラメーター] ウィンドウを示しています。

さまざまなパラメーターとインターフェイス ツールが強調表示されている [パラメーター] ペインを示すスクリーンショット。

  1. パラメーター ウィンドウ: 各パラメーターのプロンプトと既定値が [パラメーター] ウィンドウに表示されます。 パラメーターのレイアウトをカスタマイズできます。 詳細については、「レポートのパラメーター ペインをカスタマイズする (Report Builder)」をご覧ください。

  2. @SalesDate パラメーター: パラメーター @SalesDate は 日付/時刻 データ型です。 テキスト ボックスの横に [日付を選択] プロンプトが表示されます。 日付を変更するには、テキスト ボックスに新しい日付を入力するか、カレンダー コントロールを使用します。

  3. @ShowAll パラメーター: パラメーター @ShowAll は Boolean データ型です。 オプション ボタンを使用して、 True または Falseを指定します。

  4. パラメーター エリアの表示/非表示の切り替えハンドル: レポート ビューアー ツール バーで、この矢印を選択すると、[パラメーター] ウィンドウの表示/非表示を切り替えることができます。

  5. @CategoryQuota パラメーター: パラメーター @CategoryQuota は Float データ型であるため、数値が使用されます。 @CategoryQuota には、複数の値を設定できます。

  6. レポートの表示: パラメーターの値を入力した後、[レポートの表示] を選択してレポートを実行します。 すべてのパラメーターに既定値が定義されている場合、レポートは最初に表示するときに自動的に実行されます。

パラメーターを作成する

レポート パラメーターは、いくつかの方法で作成できます:

Note

一部のデータ ソースでは、パラメーターがサポートされていません。

パラメーターを持つデータセット クエリまたはストアド プロシージャ

変数を含むデータセット クエリまたは入力パラメーターを含むデータセットのストアド プロシージャを追加する。 データセット パラメーターは変数または入力パラメーターごとに作成され、レポート パラメーターはデータセット パラメーターごとに作成されます。

[レポート データ] ペイン、[パラメーター] ウィンドウ、および [データセットのプロパティ] ダイアログ ボックスが強調表示されているレポート ビルダーを示すスクリーンショット。

レポート ビルダーのこのイメージには、以下のものが示されています。

  1. [レポート データ] ペインに表示されるレポート パラメーター。

  2. パラメーターを持つデータセット。

  3. [パラメーター] ペイン。

  4. [データセットのプロパティ] ダイアログ ボックスに表示されているパラメーター。

データセットは、埋め込みデータセットまたは共有データセットにすることができます。 レポートに共有データセットを追加する場合、内部としてマークされているデータセット パラメーターはレポートでオーバーライドできません。 内部としてマークされていないデータセット パラメーターはオーバーライドできます。

詳細については、「データセットのクエリ」を参照してください。

パラメーターを手動で作成する

[レポート データ] ペインからパラメーターを手動で作成します。 レポート パラメーターを構成すると、ユーザーが値を対話的に入力してレポートの内容や外観をカスタマイズできるようにすることができます。 ユーザーが事前構成済みの値を変更できないように、レポート パラメーターを構成することもできます。

Note

パラメーターは、サーバーで個別に管理されるため、新しいパラメーター設定でメイン レポートを再発行しても、レポートの既存のパラメーター設定が上書きされることはありません。

パラメーターを持つレポート パーツ

注意

レポート パーツは、SQL Server Reporting Services 2019 以降の SQL Server Reporting Services のすべてのリリースと、Power BI Report Server 2022 年 9 月以降の Power BI Report Server のすべてのリリースで廃止になっています。

パラメーターへの参照、または変数を含む共有データセットへの参照を含むレポート パーツを追加する。

レポート パーツはレポート サーバーに保存され、他のユーザーが各自のレポートで使用できます。 レポート パーツとして保存したパラメーターは、レポート サーバーからは管理できません。 パラメーターは、レポート パーツ ギャラリー で検索できます。 追加した後は、レポートで構成できます。 詳細については、「レポート パーツ (レポート ビルダーおよび SSRS)」を参照してください。

Note

パラメーターは、依存データセットとパラメーターを持つデータ領域の別個のレポート パーツとしてパブリッシュできます。 パラメーターはレポート パーツとして表示されますが、レポート パーツ パラメーターをレポートに直接追加することはできません。 代わりに、レポート パーツを追加します。レポート パーツに含まれているか、レポート パーツによって参照されているデータセット クエリから、必要なレポート パラメーターが自動的に生成されます。 レポート パーツの詳細については、「レポート パーツ (レポート ビルダーおよび SSRS)」および「レポート デザイナーでのレポート パーツ (SSRS)」を参照してください。

パラメーター値

レポートのパラメーター値を選択するときに使用できるオプションを次に示します:

  • ドロップダウン リストから 1 つのパラメーター値を選択する。

  • ドロップダウン リストから複数のパラメーター値を選択する。

  • 1 つのパラメーターのドロップダウン リストから値を選択する。この値は、別のパラメーターのドロップダウン リストで使用できる値を決定します。 これらの値はカスケード型パラメーターです。 カスケード型パラメーターを使用すると、何千ものパラメーター値を管理しやすい数まで連続的にフィルター処理することができます。

    詳細については、「カスケード型パラメーターのページ割り付けレポートへの追加 (Report Builder)」を参照してください。

  • 既定値がすでにパラメーターに存在しているため、パラメーターを選択しなくてもレポートを実行できます。

レポート パラメーターのプロパティ

[レポートのプロパティ] ダイアログ ボックスを使用して、レポート パラメーターのプロパティを変更できます。 次の表に、各パラメーターに設定できるプロパティの概要を示します。

プロパティ 内容
Name パラメーターの名前を入力します (大文字と小文字が区別されます)。 名前は英字で始まる必要があり、英字、数字、またはアンダー スコア (_) を使用できます。 名前にスペースを含めることはできません。 自動的に生成されたパラメーターの名前は、データセット クエリのパラメーターと同じ名前になります。 既定では、手動で作成されたパラメーターの名前は、ReportParameter1 のようになります。
Prompt レポート ビューアー ツール バーでパラメーターの横に表示されるテキストです。
データ型 レポート パラメーターのデータ型は、次のいずれかである必要があります。

[Boolean] 。 オプション ボタンから True または False を選択します。

DateTime。 カレンダー コントロールから日付を選択します。

Integer。 ユーザーは、テキスト ボックスに値を入力します。

Float。 ユーザーは、テキスト ボックスに値を入力します。

Text。 ユーザーは、テキスト ボックスに値を入力します。

パラメーターに有効な値を定義した場合は、データ型が DateTimeであっても、ユーザーはドロップダウン リストから値を選択することになります。

レポートのデータ型の詳細については、「RDL データ型」をご覧ください。
[空白の値を許可] パラメーターの値に空の文字列 (空白) を許可する場合に選択します。

パラメーターの有効な値の一覧を指定し、その値の 1 つを空白にする場合、指定する値の中に含める必要があります。 このオプションを選択しても、空白が使用可能な値として自動的に含まれることはありません。
[NULL 値を許可] パラメーターの値に NULL 値を許可する場合に選択します。

パラメーターの有効な値の一覧を指定し、その有効値の 1 つを null にする場合、指定する値の中に含める必要があります。 このオプションを選択しても、null が使用可能な値として自動的に含まれることはありません。
[複数の値を許可] 使用可能な値を指定して、ユーザーがドロップダウン リストから値を選択できるようにすると、 このプロパティを使用して、必ずデータセット クエリで有効な値のみが送信されるようにします。

パラメーターの値に、ドロップダウン リストに表示される複数の値を指定できる場合に選択します。 Null 値は使用できません。 このチェック ボックスがオンの場合、パラメーターのドロップダウン リストで、使用可能な値の一覧にチェック ボックスが追加されます。 一覧の一番上には、 [すべて選択]チェック ボックスが表示されます。 ユーザーは、必要な値のチェック ボックスをオンにすることができます。

値を提供するデータが急速に変化する場合は、ユーザーに最新の一覧が表示されるとは限りません。
Visible レポートの実行時にレポートの上部にレポート パラメーターを表示する場合に選択します。 このオプションを選択すると、実行時にパラメーター値を選択できます。
[非表示] パブリッシュ済みレポート内のレポート パラメーターを非表示にする場合に選択します。 このレポート パラメーターの値は、レポートの URL やサブスクリプション定義で設定できます。また、レポート サーバーで設定することもできます。
内部 レポート パラメーターを非表示にする場合に選択します。 パブリッシュ済みレポートでは、レポート パラメーターはレポート定義でのみ参照できます。
使用できる値 パラメーターに使用できる値を指定する場合、それらの値は常にドロップダウン リストとして表示されます。 たとえば、DateTime パラメーターに使用できる値を指定すると、カレンダー コントロールの代わりに日付のドロップダウン リストが パラメーター ウィンドウに表示されます。

データ ソースのオプションを設定して、データ ソースに関連付けられているデータセットのすべてのクエリに対して 1 つのトランザクションが使用できます。 このオプションを使用すると、レポートとサブレポート間で値の一覧の一貫性が確保されます。

セキュリティ上の注意: Text データ型のパラメーターが含まれるレポートでは、使用可能な値の一覧 (有効な値の一覧とも呼ばれます) が使用され、レポートを実行するすべてのユーザーがレポートにデータを表示するために必要なアクセス許可のみを持っていることを確認します。 詳細については、「セキュリティ (レポート ビルダー)」を参照してください。
既定の値 クエリまたは静的な一覧から既定値を設定します。

各パラメーターに既定値が指定されていれば、レポートは最初に表示したときに自動的に実行されます。
上級 このパラメーターがレポートのデータに直接的または間接的に影響するかどうかを示す値、レポート定義属性 UsedInQueryを設定します。

[更新のタイミングを自動的に決定する]
レポート プロセッサでこの値の設定が決定されるようにする場合に選択します。 このパラメーターへの直接参照または間接参照が含まれているデータセット クエリがレポート プロセッサで検出された場合、またはレポートにサブレポートがある場合は、この値が True になります。

[常に更新する]
データセット クエリまたはパラメーター式でレポート パラメーターを直接的または間接的に使用する場合に選択します。 このオプションを選択すると、 UsedInQuery が True に設定されます。

[更新しない]
レポート パラメーターがデータセット クエリまたはパラメーター式で直接的または間接的に使用されない場合は、このオプションを選択します。 このオプションを選択すると、 UsedInQuery が False に設定されます。

注意: [更新しない] は慎重に使用してください。 レポート サーバーでは、 UsedInQuery を使用してレポート データと表示レポートのキャッシュ オプション、およびスナップショット レポートのパラメーター オプションが制御されます。 [更新しない] を正しく設定しないと、正しいレポート データまたはレポートがキャッシュされなかったり、スナップショット レポートのデータの一貫性が損なわれたりする可能性があります。 詳細については、「レポート定義言語 (SSRS)」を参照してください。

データセット クエリ

データセット クエリのデータをフィルター処理するには、結果セットに追加するか、結果セットから除外する値を指定して、取得データを制限する制限句を含めます。

データ ソースのクエリ デザイナーを使用すると、パラメーター化クエリの作成に役立ちます。

  • Transact SQL クエリでは、さまざまなデータ ソースで、異なるパラメーターの構文がサポートされます。 サポートは、位置または名前によってクエリ内で識別されるパラメーターに応じて異なります。 詳細については、「レポート データセット (SSRS)」で特定の外部データ ソースの記事を参照してください。 リレーショナル クエリ デザイナーで、フィルターのパラメーター オプションを選択してパラメーター化クエリを作成する必要があります。 詳細については、「関係クエリ デザイナーのユーザー インターフェイス (Report Builder)」を参照してください。

  • クエリ デザイナーで指定したフィルターに基づいてパラメーターを作成するかどうかを指定できます。 Microsoft SQL Server Analysis Services、SAP NetWeaver BI、Hyperion Essbase などの多次元データ ソースに基づくクエリの場合は、この仕様にすることができます。 詳細については、「クエリ デザイン ツール (SSRS)」に記載されている、データ拡張機能に対応するクエリ デザイナーの記事をご覧ください。

発行されたレポートのパラメーターの管理

レポートをデザインするときは、レポート パラメーターはレポート定義に保存されます。 レポートをパブリッシュするときは、レポート パラメーターはレポート定義とは別に保存され管理されます。

パブリッシュ済みのレポートには、次のツールを使用できます:

  • レポート パラメーター プロパティ: レポート パラメーターの値を (レポート定義とは関係なく) レポート サーバー上で直接変更します。

  • キャッシュされたレポート: レポートのキャッシュ計画を作成するには、各パラメーターに既定値が指定されている必要があります。 詳細については、「レポートのキャッシュ (SSRS)」を参照してください。

  • キャッシュされた共有データセット: 共有データセットのキャッシュ計画を作成するには、各パラメーターに既定値が指定されている必要があります。 詳細については、「レポートのキャッシュ (SSRS)」を参照してください。

  • リンクされたレポート: さまざまな対象ユーザーのためにデータをフィルター処理するパラメーター値が事前に設定されたリンク レポートを作成できます。 詳細については、「リンク レポートを作成する」を参照してください。

  • レポートのサブスクリプション: データをフィルター処理してレポートをサブスクリプションで配信するためのパラメーター値を指定できます。 詳細については、「サブスクリプションと配信 (Reporting Services)」を参照してください。

  • URL アクセス: レポートへの URL でパラメーター値を指定できます。 URL アクセスを使用して、レポートを実行したりパラメーター値を指定したりすることもできます。 詳しくは、「URL アクセス (SSRS)」をご覧ください。

レポート定義を再パブリッシュした場合には、パブリッシュ済みレポートのパラメーター プロパティは保持されます。 レポート定義が同じレポートとして再パブリッシュされ、パラメーター名およびデータ型が同じである場合、プロパティ設定は保持されます。 レポート定義でパラメーターを追加または削除する場合、発行されたレポート内でパラメーターのプロパティを変更する必要がある可能性があります。 または、既存のパラメーターのデータ型または名前を変更するために、プロパティの変更が必要になる場合があります。

パラメーターは変更できない場合もあります。 レポート パラメーターでデータセット クエリからの既定値が取得される場合、その値を発行されたレポートで変更できません。 また、レポート サーバーで変更することはできません。 実行時に使用される値は、クエリの実行時に決定されます。 式ベースのパラメーターを使用すると、式の評価時に決定されます。

レポート実行オプションは、パラメーターの処理方法に影響します。 スナップショットとして実行されるレポートは、クエリがパラメーターの既定値を含まない限り、クエリから派生したパラメーターを使用できません。

サブスクリプションのパラメーター

オンデマンドのレポートまたはスナップショットに対してサブスクリプションを定義し、サブスクリプションの処理中に使用するパラメーター値を指定できます。

  • オンデマンド レポート: 要求時レポートでは、レポートに一覧表示された各パラメーターのパブリッシュされた値とは異なる、別のパラメーター値を指定できます。 たとえば、 期間 パラメーターを使用して、顧客に現在の日付、週、または月のサービス要求を返すサービスの呼び出しレポートを保持していると仮定します。 レポートの既定のパラメーター値が 今日に設定されている場合、サブスクリプションでは別のパラメーター値 ( など) を使用して、週単位または月単位の数値を含むレポートを生成できます。

  • スナップショット: スナップショットでは、サブスクリプションはスナップショットに対して定義されているパラメーター値を使用する必要があります。 サブスクリプションを使用して、スナップショットに定義されているパラメーター値をオーバーライドすることはできません。 たとえば、レポート スナップショットとして実行される西地区の売上レポートをサブスクライブしていて、そのスナップショットに地域のパラメーター値として Western が指定されていると仮定します。 この場合、このレポートへのサブスクリプションを作成するには、サブスクリプションで Western パラメーター値を使用する必要があります。 パラメーターが無視されることを示すために、サブスクリプション ページのパラメーター フィールドは読み取り専用フィールドに設定されます。

  • レポート実行オプションは、パラメーターの処理方法に影響します。 レポート スナップショットとして実行されるパラメーター化されたレポートでは、レポート スナップショットに定義されているパラメーター値が使用されます。 パラメーター値は、レポートの [パラメーター プロパティ] ページで定義されています。 スナップショットとして実行されるレポートは、クエリがパラメーターの既定値を含まない限り、クエリから派生したパラメーターを使用できません。

  • サブスクリプションを定義した後にレポート スナップショットのパラメーター値が変わると、レポート サーバーでサブスクリプションが非アクティブ化されます。 サブスクリプションの非アクティブ化は、レポートが変更されたことを示します。 サブスクリプションをアクティブ化するには、サブスクリプションを開いてから保存します。

Note

データ ドリブン サブスクリプションでは、サブスクライバー データ ソースから取得したパラメーター値を使用できます。 詳細については、「サブスクライバー データに対して外部データ ソースを使用する (データ ドリブン サブスクリプション)」を参照してください。

詳細については、「サブスクリプションと配信 (Reporting Services)」を参照してください。

パラメーターとデータの確保

秘密性の高い情報を含むパラメーター化されたレポートを配布する際には注意が必要です。 レポート パラメーターは簡単に別の値に置き換えることができるので、予想外の情報が公開される可能性があるためです。

従業員データや個人データに対してパラメーターを設定する代わりに、組み込みフィールド から UserID フィールドを含む式に基づいてデータを選択すると、セキュリティを強化できます。 UserID は、レポートを実行しているユーザーの ID を入手するための手段として利用できます。後は、その ID を使用して、ユーザー固有のデータを取得できます。

重要

String 型のパラメーターが含まれるレポートでは、使用可能な値の一覧 (有効な値の一覧とも呼ばれる) を使用してください。また、レポートを実行するすべてのユーザーに対して、レポートのデータ表示に必要な権限のみを与えてください。 String型のパラメーターを定義する際には、任意の値が許容されるテキスト ボックスが表示されます。 使用可能な値の一覧を使用すると、入力できる値が制限されます。 データセット パラメーターにレポート パラメーターが関連付けられている場合に、使用可能な値の一覧を使用しないと、レポート ユーザーはテキスト ボックスに SQL 構文を入力できるため、レポートとサーバーで SQL インジェクション攻撃を受ける危険性が生じます。 さらに、ユーザーが新しい SQL ステートメントを実行するための十分な権限を持っている場合は、サーバーで予想外の結果が生じる可能性もあります。

データセット パラメーターと関連付けられていないレポート パラメーターがあり、このパラメーター値がレポートに含まれている場合、レポート ユーザーは、式の構文または URL をパラメーター値に入力して、このレポートを Excel または HTML に変換できます。 別のユーザーがそのレポートを表示して、表示されたパラメーター コンテンツを選択すると、悪意のあるスクリプトまたはリンクが意図せず実行されてしまう可能性があります。

悪意のあるスクリプトを誤って実行するリスクを軽減するためには、信頼されたソースのレポートしか開かないようにする必要があります。 レポートのセキュリティ保護の詳細については、「レポートとリソースの保護」を参照してください。