式での組み込みのレポート関数と集計関数の使用 (Reporting Services)

Reporting Services には、データセット、データ領域、およびグループ内の集計データを計算したり、レポート ページの最初の値や最後の値など、その他のデータ値を取得したりする際に式で使用するための組み込み関数が用意されています。数値フィールドの既定の集計関数は SUM です。別の関数を選択するには、[式] ダイアログ ボックスの [共通の関数][集計] カテゴリを選択します。

実行時にレポート データとレポート レイアウトが結合されると、レポート プロセッサによって、式の中の各関数参照の既定のスコープが決まります。既定のスコープには、データセット、データ領域、Tablix グループ (親、子、隣接、または再帰)、Tablix の行グループと列グループの交差部分、またはグラフ グループ (系列、カテゴリ、値) を指定できます。ほとんどの関数では、関数呼び出しで、既定のスコープとは異なるスコープを指定することもできます。関数の有効なスコープを判断するには、各関数参照に関するトピックを参照してください。例については、「合計およびその他の集計の計算 (Reporting Services)」を参照してください。

次の表に、Reporting Services でサポートされている組み込み関数のカテゴリの一覧を示します。

  • 集計の計算

  • 実行中の値の計算

  • 行数の取得

  • 並べ替え依存の値の取得

  • サーバー集計値の取得

  • 再帰レベルの取得

  • スコープのテスト

スコープについて

Reporting Services では、"スコープ" という用語は、コンテキストに応じて異なる概念を表します。このような異なる概念を次に示します。

  • レポート処理のレポート アイテムのスコープ。実行時にレポート データとレポート レイアウトが結合されると、各レポート アイテムが処理されます。Tablix の行グループおよび列グループが処理されると、Tablix データ領域は、外側からより限定されたデータ セットの順に処理されます。この意味では、グループはデータ領域に含まれます。また、子グループとその兄弟は親グループに含まれます。たとえば、グループの切り替えアイテムは、同じグループ スコープまたは任意のコンテナ グループ スコープ内のテキスト ボックスである必要があります。詳細については、後の「コンテナ スコープについて」を参照してください。

  • 集計関数のスコープ。レポート プロセッサは、次に示すように、名前付きスコープまたは既定のスコープ内の各集計式を評価します。

    • 名前付きスコープは、データセットの名前である場合も、データ領域またはグループの名前である場合もあります。

    • 既定のスコープは、レポート プロセッサで評価されているレポート アイテム プロパティによって異なります。たとえば、行グループと列グループを含むデータ領域内の Tablix セルの既定のスコープは、そのセルが属している最も内側の行グループと列グループになります。グループを含まないテーブル内のセルの既定のスコープは詳細グループです。デザイン画面では、Tablix データ領域に視覚的要素が表示されます。この要素を使用すると、セルの使用可能なスコープを判別できます。グループ バーは、Tablix データ領域の上および横に表示され、グループに属している行または列を示します。セルが選択されると、グループ インジケータにより、そのセルが属している最も内側のアクティブなグループが表示されます。詳細については、「Tablix データ領域の処理」を参照してください。

      デザイン画面上のテキスト ボックスには、既定のスコープがありません。=First(Fields!Sales.Value,"Dataset1") のように、使用するデータセットの名前を指定する必要があります。

      組み込み関数を呼び出して名前付きスコープを指定する場合は、関数参照を確認して、有効なスコープを判別します。たとえば、Sum に対して、既定のスコープまたはコンテナ スコープを指定できます。

コンテナ スコープについて

次のリストは、上から下の順に、最も外側から最も内側になるスコープの包含関係を示しており、そのスコープが表すデータについて説明しています。

  • レポート データセット   データ領域、またはレポート本文内のレポート アイテムにリンクされたレポート データセットを示します。集計には、データセットのフィルタ式が適用された後の、レポート データセットのデータが使用されます。

  • データ領域   データ領域のフィルタ式および並べ替え式が適用された後のデータ領域のデータを示します。データ領域の集計を計算する際にはグループ フィルタが使用されません。

  • 列グループと行グループ   親グループと子グループにグループ式およびグループ フィルタが適用された後のデータを示します。スコープの包含関係を明確にするため、各親グループにはその子グループが含まれています。

  • 入れ子になったデータ領域   入れ子になったデータ領域が追加されたセルのコンテキストで、入れ子になったデータ領域のフィルタ式と並べ替え式が適用された後の、そのデータ領域のデータを示します。

  • 入れ子になったデータ領域の行グループと列グループ   入れ子になったデータ領域のグループ式とグループ フィルタが適用された後のデータを示します。

組み込み関数によって、現在のスコープまたはコンテナ スコープを指定する必要があることが指定された場合、包含関係において現在のスコープ以下のレベルのスコープを指定することはできません。たとえば、子グループを持つ行グループ内の行からは、子グループの名前をスコープとして指定することも、兄弟の行グループを指定することもできません。既定のスコープを使用するか、包含関係において上位のスコープを指定する必要があります。

注意注意

行グループと列グループの両方にまたがる値を 1 つの式で集計することはできません。行グループのスコープが指定された集計と列グループのスコープが指定された別の集計を含む式の作成はサポートされていません。

フィルタ式

データセットとデータ領域のフィルタ式には、集計関数を含めることができません。データ領域の集計を計算する場合は、グループ フィルタが無視されます。

集計の計算

次の組み込み関数は、既定のスコープまたは名前付きスコープ内の NULL 以外の一連の数値データの集約値を計算します。集計計算に使用するすべてのデータは同じデータ型である必要があります。複数の数値データ型のデータを同じデータ型に変換するには、CInt、CDbl、CDec などの変換関数を使用します。詳細については、「データ型変換関数」を参照してください。

これらの関数を使用して再帰型階層のグループの集計を計算するには、Recursive パラメータを指定する必要があります。

関数

説明

Avg

式で指定された NULL 以外のすべての数値の平均を、指定されたスコープで評価して返します。

Count

式で指定された NULL 以外の値の数を、指定されたスコープのコンテキストで評価して返します。

CountDistinct

式で指定された NULL 以外の値が全部で何種類あるかを、指定されたスコープのコンテキストで評価して返します。

Max

指定されたスコープのコンテキストで、式で指定された NULL 以外のすべての数値の中から最大値を返します。グラフの軸の最大値を指定してスケールを制御する場合は、この関数を使用できます。

Min

指定されたスコープのコンテキストで、式で指定された NULL 以外のすべての数値の中から最小値を返します。グラフの軸の最小値を指定してスケールを制御する場合は、この関数を使用できます。

StDev

式で指定された NULL 以外のすべての数値の標準偏差を、指定されたスコープで評価して返します。

StDevP

式で指定された NULL 以外のすべての数値の母集団標準偏差を、指定されたスコープのコンテキストで評価して返します。

Sum

式で指定された NULL 以外のすべての数値の合計を、指定されたスコープで評価して返します。

Var

式で指定された NULL 以外のすべての数値の分散を、指定されたスコープで評価して返します。

VarP

式で指定された NULL 以外のすべての数値の母集団に対する分散を、指定されたスコープのコンテキストで評価して返します。

実行中の値の計算

次の組み込み関数は、データセットの実行中の値を計算します。RowNumber は、コンテナ スコープ内の行ごとに増加するカウントの実行中の値を返す点で、RunningValue に似ています。これらの関数のスコープのパラメータでは、カウントが再開されるタイミングを制御するコンテナ スコープを指定する必要があります。

関数

説明

RowNumber

指定されたスコープの実行中の行数を返します。RowNumber 関数では、カウントが 0 ではなく 1 から再開されます。

RunningValue

式で指定された NULL 以外のすべての数値の実行中の集計を、指定されたスコープに対して評価して返します。

行数の取得

次の組み込み関数は、指定されたスコープの行数を計算します。この関数を使用すると、NULL 値の行を含め、すべての行がカウントされます。

関数

説明

CountRows

NULL 値の行を含む、指定されたスコープ内の行数を返します。

並べ替え依存の値の取得

次の組み込み関数は、指定されたスコープ内の最初、最後、または前の値を返します。これらの関数は、データ値の並べ替え順序に依存します。たとえば、これらの関数を使用すると、ページの最初の値と最後の値を検出して、辞書形式のページ ヘッダーを作成することができます。また、Previous を使用すると、特定のスコープ内のある行の値と前の行の値を比較し、テーブルの前年比の比率を検出する処理などを行うことができます。

関数

説明

First

指定された式の指定されたスコープの最初の値を返します。

Last

指定された式の指定されたスコープの最後の値を返します。

Previous

指定されたスコープ内のアイテムの前のインスタンスに値または指定された集計値を返します。

サーバー集計値の取得

次の組み込み関数は、データ プロバイダからカスタム集計を取得します。たとえば、データ ソースの種類に Analysis Services を使用すると、グループ ヘッダーで使用するために、データ ソース サーバーで計算された集計を取得することができます。

関数

説明

Aggregate

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

スコープのテスト

次の組み込み関数は、レポート アイテムの現在のコンテキストをテストし、それが特定のスコープのメンバかどうかを確認します。

関数

説明

InScope

アイテムの現在のインスタンスが、指定したスコープ内にあるかどうかを示します。

再帰レベルの取得

次の組み込み関数は、再帰型階層が処理されたときの現在のレベルを取得します。テキスト ボックスの Padding プロパティに対してこの関数の結果を使用して、再帰グループの階層構造のインデント レベルを制御できます。詳細については、「再帰型階層グループの作成 (Reporting Services)」を参照してください。

関数

説明

Level

再帰型階層の現在の深さのレベルを返します。