データセット フィルター、データ領域フィルター、およびグループ フィルターの追加 (レポート ビルダー 3.0 および SSRS)

レポートの場合、フィルターはデータセット、データ領域、またはデータ領域グループの一部であり、レポートで使用するデータを制限するために作成します。データセット クエリを変更できない場合 (共有データセットを使用している場合など)、レポート データを制御する方法としてフィルターを使用できます。

レポートにどのようなデータを表示し、どのようなデータを処理するかは、フィルターを使用して制御できます。フィルターは、データセット、データ領域、またはグループに対して指定できるほか、複数のフィルターを自由に組み合わせて指定できます。

詳細については、「データセットにフィルターを追加する方法 (レポート ビルダー 3.0 および SSRS)」および「フィルター式の例 (レポート ビルダー 3.0 および SSRS)」を参照してください。

注意

レポート定義 (.rdl) は、Business Intelligence Development Studio のレポート ビルダー 3.0 およびレポート デザイナーで作成および変更できます。これらの作成環境では、レポートおよび関連アイテムの作成方法、開く方法、および保存方法が異なります。詳細については、microsoft.com Web サイトの「レポート デザイナーとレポート ビルダー 3.0 でのレポートのデザイン (SSRS)」を参照してください。

フィルターを設定する状況の選択

レポート アイテムに対するフィルターは、ソース側でデータをフィルター処理できない場合に指定します。たとえば、データ ソースがクエリ パラメーターをサポートしていない、ストアド プロシージャを実行する関係上、クエリに変更を加えることができない、パラメーター化されたレポートのスナップショットで、ユーザーごとにカスタマイズしたデータを表示する場合などは、レポート フィルターを使用します。

レポート データセットを取得する前または後に、レポート データをフィルター処理できます。取得前にデータをフィルター処理するには、各データセットのクエリを変更します。クエリでデータをフィルター処理すると、データ ソース側でデータがフィルター処理されて、レポート データの取得と処理に必要なデータ量を低減できます。取得後にデータをフィルター処理するには、レポートにフィルター式を作成します。データセット、データ領域、または詳細グループをはじめとするグループに対してフィルター式を設定できます。フィルター式にパラメーターを含めることもできるため、レポートの表示ユーザーを識別する値に基づいてフィルター処理するなど、特定の値または特定ユーザーのデータをフィルター処理する手段が得られます。

フィルターを設定する場所の選択

フィルターの設定場所は、レポートにどのような効果を持たせるかに基づいて判断します。レポート プロセッサは実行時に、データセット、データ領域、グループの順にフィルターを適用します。グループについては、フィルターがグループ階層の上から順に適用されます。テーブル、マトリックス、および一覧では、行グループ、列グループ、および隣接するグループに対してフィルターが別々に適用されます。グラフでは、カテゴリ グループと系列グループに対するフィルターが別々に適用されます。レポート プロセッサがフィルターを適用するとき、すべてのフィルター式が、各レポート アイテムの [プロパティ] ダイアログ ボックスの [フィルター] ページに定義されている順序で適用されます。これは、フィルター式を論理 AND 演算子で結合した結果に相当します。

次に、フィルターを設定した場合の効果を各種のレポート アイテムごとに説明します。

  • データセット   単一のデータセットに関連付けられている 1 つまたは複数のデータ領域を同じ方法でフィルター処理する必要がある場合は、そのデータセットに対してフィルターを設定します。たとえば、同じ売上データを表示するテーブルとグラフの両方に同じデータセットが関連付けられている場合は、そのデータセットに対してフィルターを設定します。

  • データ領域   単一のデータセットに 1 つまたは複数のデータ領域が関連付けられており、そのデータセットをそれぞれ異なる角度から眺めた結果を表示させている場合は、データ領域に対してフィルターを設定します。たとえば、同じレポートに 2 つのテーブル データ領域が存在するとき、一方のテーブル データ領域には、売上高の上位 10 店舗を表示するフィルターを設定し、もう一方のテーブル データ領域には、下位 10 店舗を表示するフィルターを設定します。

  • Tablix データ領域の行グループまたは列グループ   グループ式の特定の値を含めたり除外したりすることによって、テーブル、マトリックス、または一覧に表示させるグループ値を制御する場合は、グループに対してフィルターを設定します。

  • Tablix データ領域の詳細グループ   データ領域に複数の詳細グループが存在するとき、データセットから異なるデータを取得しながら、それぞれ別々の詳細グループに表示させる場合は、詳細グループに対してフィルターを設定します。

  • グラフ データ領域の系列グループまたはカテゴリ グループ   グループ式の特定の値を含めたり除外したりすることによって、グラフに表示させる値を制御する場合は、系列グループまたはカテゴリ グループに対してフィルターを設定します。

トップに戻る

フィルター式について

レポート プロセッサは、実行時に値を指定のデータ型に変換し、指定された演算子を使って式と値を比較します。フィルター式の各部分の説明を次に示します。

  •    フィルター処理の対象を定義します。通常、これは、データセット フィールドです。

  • データ型   実行時にレポート プロセッサによってフィルター式が評価される際に使用されるデータ型を指定します。レポート定義スキーマでサポートされているデータ型を選択する必要があります。

  • 演算子   フィルター式の右辺と左辺をどのように比較するかを定義します。

  •    比較に使用する式を定義します。

以降の各セクションで、フィルター式の各部分について説明します。

レポート プロセッサが実行時にフィルター式を評価するためには、式のデータ型と値のデータ型とが一致している必要があります。[式] に対して選択されているフィールドのデータ型は、データ ソースからデータを取得するときに使用されるデータ処理拡張機能またはデータ プロバイダーによって判断されます。[値] に対して入力された式のデータ型は、Reporting Services の既定の設定に基づいて判断されます。どのデータ型が使用されるかは、レポート定義でサポートされているデータ型によって決まります。データベースから取得された値は、データ プロバイダーによって CLR 型に変換される場合があります。

データ型

レポート プロセッサが 2 つの値を比較するためには、データ型が同じであることが条件となります。次の表は、CLR データ型とレポート定義のデータ型の対応関係を示しています。データ ソースから取得されたデータが、別のデータ型に変換されてレポート データになる場合もあります。

レポート定義スキーマのデータ型

CLR 型

Boolean

Boolean

DateTime

DateTime,DateTimeOffset

Integer

Int16, Int32, UInt16, Byte, SByte

Float

Single, Double, Decimal

Text

String, Char, GUID, Timespan

データ型を指定する必要がある場合は、式の値に対して適切な変換を指定できます。

演算子

次の表は、フィルター式に使用できる演算子と、その演算子を使用したフィルター式の評価方法の一覧です。

演算子

アクション

Equal, Like, NotEqual, GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual

式と単一の値とを比較します。

TopN, BottomN

式と単一の Integer 値とを比較します。

TopPercent, BottomPercent

式と単一の値 (Integer または Float) とを比較します。

Between

式が 2 つの値の範囲内にあるかどうかを調べます。

In

式が特定の値の集合に含まれるかどうかを調べます。

最後に、フィルター式のもう 1 つの構成部分である "値" について説明します。レポート プロセッサは、[式] で指定されたデータにフィルターの通過を許可するかどうかを判断する際、評価対象の式を指定のデータ型に変換した後、フィルター式全体を評価します。

標準の CLR データ型以外の型に変換するためには、特定のデータ型へと明示的に変換するように、式を修正する必要があります。この変換には、[式] ダイアログ ボックス ([共通の関数][変換]) に表示される変換関数を使用できます。たとえば、SQL Server データ ソースの money 型として格納されたデータを表す ListPrice というフィールドがあるとします。データ処理拡張機能は、このフィールドの値を System..::..Decimal 型として返します。このとき、レポートの通貨で $50000.00 を超える値だけを使用するようにフィルターを設定するには、=CDec(50000.00) という式を使って、この値を Decimal 型に変換します。

フィルターに使用する値をユーザーが対話形式で選択できるように、この値にパラメーター参照を含めることもできます。

トップに戻る