次の方法で共有


Aggregate 関数 (レポート ビルダー 3.0 および SSRS)

データ プロバイダーの定義に従い、指定された式のカスタムの集計を返します。

注意

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

構文

Aggregate(expression, scope)

パラメーター

  • expression
    この集計関数の実行対象の式です。指定する式は、単純なフィールド参照の式である必要があります。

  • scope
    (String) この集計関数の適用先となるレポート アイテムを含むデータセット、グループ、またはデータ領域の名前。Scope は文字列定数である必要があり、式を指定することはできません。scope を指定しない場合、現在のスコープが使用されます。

戻り値の型

戻り値の型はデータ プロバイダーによって決められます。プロバイダーがこの関数をサポートしていない場合や、データが取得できなかった場合は、Nothing が返されます。

説明

Aggregate 関数を使用すると、外部データ ソース上で計算される集計を使用できます。この機能のサポートは、データ拡張機能によって異なります。たとえば、SQL Server Analysis Services データ処理拡張機能では、MDX クエリからフラットな行セットを取得します。結果セット内の一部の行には、データ ソース サーバーで計算される集計値を含めることができます。これらは、サーバー集計と呼ばれます。サーバー集計を Analysis Services のグラフィカルなクエリ デザイナーで表示するには、ツール バーの [集計の表示] ボタンを使用します。詳細については、「Analysis Services の MDX クエリ デザイナーのユーザー インターフェイス (レポート ビルダー 3.0)」を参照してください。 

Tablix データ領域の詳細行にデータセットの集計値および詳細値の組み合わせを表示する場合、通常、サーバー集計値は詳細データではないため含まれません。ただし、データセットから取得したすべての値を表示し、集計データを計算および表示する方法をカスタマイズできます。

Reporting Services では、サーバー集計値を詳細行に表示するかどうかを判断するため、レポート内の式で Aggregate 関数の使用が検出されます。データ領域の式に Aggregate を含めると、サーバー集計値は、詳細行ではなくグループの合計行または総計行のみに表示されます。サーバー集計値を詳細行に表示する場合は、Aggregate 関数を使用しないでください。

この既定の動作を変更するには、[データセットのプロパティ] ダイアログ ボックスの [小計を詳細行として解釈] オプションの値を変更します。このオプションを True に設定すると、サーバー集計値を含むすべてのデータが詳細データとして表示されます。False に設定すると、サーバー集計値は合計として表示されます。このプロパティの設定は、このデータセットにリンクされているすべてのデータ領域に影響します。

注意

Aggregate を参照するレポート アイテムを含むすべてのグループでは、そのグループ式に単純なフィールド参照 ([FieldName] など) が指定されている必要があります。複雑なグループ式を使用するデータ領域で Aggregate を使用することはできません。SQL Server Analysis Services データ処理拡張機能では、Aggregate 関数を使用した集計がサポートされるように、(MemberProperty 型ではなく) LevelProperty 型の MDX フィールドをクエリに含める必要があります。

Expression には、入れ子になった集計関数への呼び出しを含めることができます。ただし、次に示すように、これには例外および条件があります。

  • 入れ子集計の Scope は、外部集計のスコープと同じであるか、そのスコープに含まれている必要があります。式内のすべてのスコープについては、1 つのスコープがそれ以外のすべてのスコープに対する子であるようなリレーションシップが必要です。

  • 入れ子集計の Scope には、データセット名は使用できません。

  • Expression には、First、Last、Previous、または RunningValue の各関数を含めることができません。

  • Expression には、recursive を指定する入れ子集計を含めることができません。

詳細については、「集計関数リファレンス (レポート ビルダー 3.0 および SSRS)」および「合計、集計、および組み込みコレクションの式のスコープについて (レポート ビルダー 3.0 および SSRS)」を参照してください。

再帰的集計の詳細については、「再帰型階層グループの作成 (レポート ビルダー 3.0 および SSRS)」を参照してください。

Aggregate 関数と Sum 関数の比較

Aggregate 関数はデータ プロバイダーまたはデータ処理拡張機能によって計算される値を返すという点で、Aggregate 関数は Sum などの数値の集計関数と異なります。Sum などの数値の集計関数は、scope パラメーターによって決まるデータセットの一連のデータを基にレポート プロセッサで計算される値を返します。詳細については、「集計関数リファレンス (レポート ビルダー 3.0 および SSRS)」に記載されている集計関数を参照してください。

使用例

次のコード例では、LineTotal フィールドのサーバー集計値を取得する式を示します。式は、GroupbyOrder グループに属する行内のセルに追加されます。

=Aggregate(Fields!LineTotal.Value, "GroupbyOrder")