レポート ビルダーのページ割り付けレポートでのデータのフィルター処理、グループ化、および並べ替え
適用対象: Microsoft レポート ビルダー (SSRS)
Power BI Report Builder
SQL Server Data Tools のレポート デザイナー
ページ分割されたレポートでは、式を使用してレポート データの制御、整理、および並べ替えを行えます。 既定では、データセットを作成してレポート レイアウトをデザインすると、レポート アイテムのプロパティが式に自動的に設定されます。 この動作は、[レポート データ] ペインに表示されるデータセット フィールド、パラメーター、およびその他の項目に基づいています。 グループまたはグループ内の行の並べ替え順序をユーザーが対話的に変更できるように、テーブルまたはマトリックスのセルに対話的な並べ替えボタンを追加することもできます。
フィルター式: フィルター式は、指定された比較に基づいてデータを含めるか除外するかをテストする式です。 フィルターは、データがデータ接続から取得された後にレポート内のデータに適用されます。 フィルターの任意の組み合わせを次の項目に追加できます:
- レポート サーバーの共有データセットの定義。
- レポート内の共有データセット インスタンスまたは埋め込みデータセット。
- テーブルやグラフなどのデータ領域。
- テーブルの行グループやグラフのカテゴリ グループなどのデータ領域グループ。
グループ式: グループ式は、データセット フィールドまたはその他の値に基づいてデータをまとめる式です。 レポート レイアウトを作成すると自動的に作成されます。 グループ式はレポート プロセッサによって、データにフィルターが適用された後に、レポート データとデータ領域が組み合わされると評価されます。 グループ式は、作成後にカスタマイズすることができます。
並べ替え式: 並べ替え式は、データ領域でのデータの表示順序を制御する式です。 レポート レイアウトを作成すると自動的に作成されます。 既定では、グループの並べ替え式は、グループ式と同じ値に設定されます。 並べ替え式は、作成後にカスタマイズすることができます。
対話的な並べ替え: ユーザーが列の並べ替え順序を切り替えられるようにするには、テーブルまたはマトリックスの列ヘッダーまたはグループ ヘッダーのセルに対話的な並べ替えボタンを追加します。
フィルター式、グループ式、または並べ替え式をユーザーがカスタマイズしやすくするために、式を変更してレポート パラメーターへの参照を追加することができます。 詳細については、「ページ割り付けレポートのパラメーター (Report Builder)」を参照してください。
詳細と例については、次の記事を参照してください。
Note
ページ分割されたレポートの定義ファイル (.rdl) は、Microsoft レポート ビルダー、Power BI レポート ビルダー、または SQL Server Data Tools のレポート デザイナーを使用して作成および変更できます。
レポート内のデータをフィルター処理する
フィルターは、データ接続から取得された後のレポート データを制御するためのレポートのパーツです。 外部データ ソースからデータを取得する前にデータセット クエリを変更してデータをフィルター処理できない場合に、フィルターを使用します。
可能であれば、レポートに表示する必要があるデータだけを返すデータセット クエリを作成します。 取得および処理する必要があるデータ量を少なくすると、レポートのパフォーマンスの向上に役立ちます。 詳細については、「レポート埋め込みデータセットと共有データセット (レポート ビルダーおよび SSRS)」を参照してください。
外部データ ソースからデータを取得した後、次のフィルターを追加できます。
- データセット:
- データ領域:
- 詳細グループを含むデータ領域グループ。
フィルターは、最初に実行時にデータセットに適用され、次にデータ領域に進みます。 その後、フィルターは、グループ階層の上から下の順序で、グループに適用されます。 テーブル、マトリックス、または一覧では、行グループ、列グループ、および隣接するグループに対するフィルターが別々に適用されます。 グラフでは、カテゴリ グループと系列グループに対するフィルターが別々に適用されます。 詳細については、「データセット フィルター、データ領域フィルター、およびグループ フィルターのページ割り付けレポートへの追加 (Report Builder)」を参照してください。
フィルターには、それぞれ フィルター式を指定します。 フィルター式には、次の 3 つの要素が含まれます:
- フィルター処理するデータを指定するデータセット フィールドまたは式。
- 演算子。
- 比較する値。
データ値のうちフィルター条件に一致するものだけが、アイテムを処理する際の対象になります。
レポートのデータをユーザーが制御しやすくなるように、フィルター式にパラメーターを含めることができます。 詳細については、「ページ割り付けレポートのパラメーター コレクションの参照 (レポート ビルダー)」を参照してください。
ユーザーごとに表示をカスタマイズするには、組み込みのフィールド UserID への参照をフィルターに含めます。 詳細については、「ページ割り付けレポートの組み込み Globals および ユーザー リファレンス (Report Builder)」を参照してください。
レポート内のデータをグループ化する
グループを使用すると、レポートのデータを整理して表示したり、集計値を計算したりすることができます。 グループを定義して使用する方法を理解することは、簡潔なレポートの作成に役立ちます。
グループ式は、以下の場合に自動的に作成されます:
- テーブル、マトリックス、グラフ のウィザードでデータセット フィールドを配置する、または マップ ウィザードで対応フィールドを配置する。
- テーブル、マトリックス、または一覧の [グループ化] ウィンドウで [行グループ] 領域または [列グループ] 領域にフィールドを追加する。
- グラフの [グラフ データ] ペインで [カテゴリ グループ] 領域または [系列グループ] 領域にフィールドを追加する。
- マップの [レイヤー データ] コンテキスト メニュー項目で、マップ要素を分析データに対応付けるフィールドを指定する。
グループはレポート定義の一部です。 グループにはそれぞれ名前が割り当てられ、 既定では、グループ名は、その元となるデータセット・フィールドに基づいています。
テーブルまたはマトリックスのデータ領域では、複数の行グループおよび列グループを作成できます。 入れ子になったグループ、隣接するグループ、および再帰型階層のグループ (組織図など) を編成して、階層構造でデータを表示できます。
式のスコープはグループ名で識別されます。 グループの名前は、次の対象となるスコープとして指定できます。
- 集計を計算します。
- データを階層的に整理し、ドリルダウン レポートの親ノードからの子ノードの表示を切り替えます。
- 複数のデータ領域で同じデータの異なるビューを表示します。
- テーブル、マトリックス、グラフ、ゲージ、またはマップの概要データを視覚化します。
詳細については、「ページ割り付けレポートの合計、集計、および組み込みコレクションの式のスコープ (レポート ビルダー)」を参照してください。
複数のデータセット フィールドに基づきグループ化するには、各フィールドをグループ式のセットに追加します。 さらに Microsoft Visual Basic で独自のグループ式を記述することもできます。 たとえば、値の範囲でグループ化したり、レポート パラメーターを使用して、ユーザーがデータ領域のデータのグループ化の方法を選択できるようにすることができます。 詳しくは、「ページ割り付けレポート内のグループ式の例 (Report Builder)」をご覧ください。
各ページのデータ量を減らし、レポート プレゼンテーションのパフォーマンスを管理するために、各グループまたは各グループ インスタンスの前後に改ページを追加することができます。 詳細については、「ページ割り付けレポートに改ページを追加する (Report Builder)」を参照してください。
データ領域グループを作成することは、レポートのデータを整理する 1 つの方法です。 データを整理する方法は他にもあり、そのそれぞれに利点があります。 詳細については、「ページ割り付けレポートでのドリルスルー、ドリルダウン、サブレポート、入れ子にされたデータ領域 (Report Builder)」を参照してください。
グループ変数を定義する
グループを定義する場合、スコープがグループであり、入れ子になったグループからアクセスできる式で使用するグループ変数を作成できます。 グループ変数は、グループ インスタンスごとに 1 回計算され、子グループにある式からアクセスできます。 たとえば、地域とサブ地域でグループ化されたデータの場合、各地域の税額を計算し、その税額をサブ地域グループの計算に使用できます。
詳細については、「ページ割り付けレポートでのレポートおよびグループ変数の参照 (Report Builder)」および「ページ割り付けレポートでの合計、集計、および組み込みコレクションの式のスコープ (Report Builder)」を参照してください。
グループとデータ領域のスコープ
同じデータセットのデータを複数の形式で表示するには、各データ領域に同じグループ式を指定します。 たとえば、分類されたデータを表示するときに、すべての詳細データをテーブルで示し、データセット全体に対する各カテゴリの集計を円グラフで視覚化することができます。 詳細については、「ページ割り付けレポートの同じデータセットへの複数のデータ領域のリンク (Report Builder)」を参照してください。
テーブル、マトリックス、または一覧のセルでデータ領域を入れ子にすると、データのスコープは自動的にそのセルの最も内側のグループ メンバーシップになります。 たとえば、行グループと列グループの両方に存在するセルにグラフを追加するとします。 そのグラフで使用可能なデータは、実行時に最も内側の行グループ インスタンスと最も内側の列グループ インスタンスにスコープが設定されます。 詳細については、「ページ割り付けレポートの合計、集計、および組み込みコレクションの式のスコープ (レポート ビルダー)」を参照してください。
レポート内のデータを並べ替える
レポートのデータの並べ替え順序を制御するには、データセット クエリのデータを並べ替えるか、データ領域またはグループの並べ替え式を定義します。 対話的な並べ替えボタンをテーブルおよびマトリックスに追加して、ユーザーが行の並べ替え順序を変更できるようにすることもできます。
同じレポート内で、3 種類すべての並べ替えを組み合わせて使用できます。 既定では、並べ替え順序は、データがデータセット クエリから返された順序によって決まります。 並べ替え式は、データ領域およびデータ領域グループで適用されます。 対話的な並べ替えは、並べ替え式の後に適用されます。
集計関数を含む式に関して、並べ替え順序が結果に影響することはほとんどありません。 次の集計関数の戻り値は並べ替え順序の影響を受けます: First、Last、Previous。 詳細については、「Report Builder 関数 - ページ割り付けレポートでの集計関数のリファレンス (Report Builder)」を参照してください。
データセット クエリでデータを並べ替える
レポートのデータが取得される前にデータを事前に並べ替えるには、データセット クエリで並べ替え順序を指定します。 クエリのデータを並べ替えることによって、レポート プロセッサではなく、データ ソースによって並べ替えが実行されます。
Microsoft SQL Server データ ソースの種類の場合、ORDER BY 句をデータセット クエリに追加できます。 たとえば、次の Transact-SQL クエリは、SELECT Sales, Region FROM SalesOrders ORDER BY Sales DESC
のように、Sales 列および Region 列を Sales を基準にテーブル SalesOrders から降順で並べ替えます。
Note
すべてのデータ ソースでクエリの並べ替え順序を指定できるわけではありません。
並べ替え式を使用してデータを並べ替える
レポートのデータがデータ ソースから取得された後にこのデータを並べ替えるには、Tablix データ領域または 詳細 グループを含むグループで並べ替え式を設定します。 次に、並べ替え式を設定した場合の効果をアイテムごとに説明します。
Tablix データ領域: データセット フィルターおよびデータ領域フィルターが実行時に適用された後、テーブル、マトリックス、または一覧のデータ領域で並べ替え式を設定して、データ領域のデータの並べ替え順序を制御します。
Tablix データ領域: 詳細 グループを含む各グループの並べ替え式を設定し、グループ インスタンスの並べ替え順序を制御します。 たとえば、詳細 グループでは、詳細行の順序を制御します。 子グループの場合、親グループ内の子グループのグループ インスタンスの順序を制御します。 既定では、グループを作成する際、並べ替え式はグループ式および昇順に設定されます。
詳細 グループが 1 つしかない場合は、データ領域または 詳細 グループでクエリの並べ替え式の効果が同じになるように定義します。
チャート データ領域: カテゴリおよび系列グループの並べ替え式を設定して、データ ポイントの並べ替え順序を制御します。 既定では、データ ポイントの順序とグラフの凡例の色の順序は同じです。 詳細については、「ページ割り付けレポートのグラフの系列の色の書式設定 (レポート ビルダー)」を参照してください。
マップ レポート アイテム: 通常、マップ要素に表示するデータはマップによってグループ化されるため、マップのデータ領域のデータを並べ替える必要はありません。
ゲージ データ領域: 通常、ゲージには範囲を基準とした単一の値が表示されるため、ゲージのデータ領域のデータを並べ替える必要はありません。 ゲージのデータを並べ替える必要がある場合は、最初にグループを定義し、次にグループの並べ替え式を設定します。
別の値で並べ替える
データ領域の行をフィールド値以外の値で並べ替えることができます。 たとえば、Size というフィールドに、各サイズに対応するテキスト値 (S、M、L、および XL) が含まれているとします。 既定では、Size に基づく行グループの並べ替え式も [[Size]
] になります。 並べ替えたデータを制御するには、データセット クエリに並べ替え順序を定義するフィールドを追加します。
また、サイズとその順序を示す値だけを含むデータセットを定義し、 Lookup 関数を使用して並べ替え順序の値を取得するように並べ替え式を変更することもできます。
たとえば、次の Transact-SQL クエリで、Sizes という名前のデータセットを定義するとします。 このクエリでは、CASE ステートメントを使用して、Size
の各値に対して SizeSortOrder という並べ替え順序の値を定義しています。
SELECT Size,
CASE Size
WHEN 'S' THEN 1
WHEN 'M' THEN 2
WHEN 'L' THEN 3
WHEN 'XL' THEN 4
ELSE 0
END as SizeSortOrder
FROM Production.Product
Size に基づく行グループがあるテーブルで、Lookup 関数を使用してサイズの値に対応する数値フィールドを検索するように、グループの並べ替え式を変更できます。 式は次の例ようになります:
=Lookup(Fields!Size.Value, Fields!Size.Value, Fields!SizeSortOrder.Value, "Sizes")
詳細については、「ページ割り付けレポートのデータ領域内のデータの並べ替え (Report Builder)」および「レポート ビルダー関数の - ページ割り付けレポートの LOOKUP 関数 (Report Builder)」を参照してください。
ユーザー向けに対話的な並べ替えを追加する
テーブルまたはマトリックスでユーザーがレポート データの並べ替え順序を変更できるようにするには、列ヘッダーまたはグループ ヘッダーに対話的な並べ替えボタンを追加します。 ユーザーはそのボタンを選択して、並べ替え順序を切り替えることができます。 対話的な並べ替えは、ユーザーとの対話が可能な HTML などの表示形式でサポートされています。
対話的な並べ替えボタンは、Tablix データ領域のセルのテキスト ボックスに追加します。 既定では、すべてのセルにテキスト ボックスが含まれています。 テキスト ボックス プロパティで、並べ替えるテーブルまたはマトリックス データ領域の部分 (親グループ値、子グループ値、または詳細行) のどちらかを指定します。 並べ替えの基準を指定し、ピア リレーションシップを持つ他のレポート アイテムに並べ替え式を適用するかどうかを指定します。 たとえば、同じデータセットのビューを表示するテーブルとグラフが四角形内に含まれている場合は、このテーブルとグラフはピア データ領域です。 ユーザーがテーブルの並べ替え順序を切り替えると、グラフの並べ替え順序も切り替わります。 詳しくは、「ページ割り付けレポート内のインタラクティブな並び替え (Report Builder)」をご覧ください。