![]() ![]() |
Total クラスは、集約関数のホルダーとして存在します。 Total クラスには、集約用の多数の関数が含まれています。 これらの関数は、ある行のセットを合計する JavaScript の BIRT 拡張です。 BIRT レポート・エンジンは、以下の 2 つのフェーズで関数を実装しています。
BIRT は、この 2 つのフェーズを実行する変更されたスクリプトを作成することにより、集約が含まれる任意のスクリプトを再書き込みします。 このプロセスにおいて理解する必要のある重要なタイミングは、集約が含まれる式をデバッグする場合です。 あるグループのフッター内の値を表示する例について考えてみます。 ここで、その値は全口座の合計のパーセントです。 以下のステートメントでは、このアクションを実行しています。
上記の例で、式ではグループ合計を示しますが、Total.OVERALL が BIRT を使用して行全体の総計を計算しています。 上記の例での式を計算するため、BIRT は合計残高を算出する第 1 パスを実行し、次に各口座の金額を算出する第 2 パスを実行します。
Total クラスの一般規則を以下に示します。
すべての集約では、2 つのオプションの引数を使用し、次のようにフィルター処理およびグループ化を指示できます。
フィルター引数では、BIRT が各行ごとに評価するブール式を指定します。 BIRT は集約の計算時に、フィルターに一致する行のみを考慮します。 例えば、あるレポートでアクティブなお客様のクレジット限度を合計し、その最大信用リスクを判別できます。
式は、データ変換フェーズで実行されます。 上記のコンテキスト説明に定義されているように、行内の列、パラメーター、ユーザー定義関数、およびその他のリソースにアクセスできます。 以下に例を示します。
フィルター引数 が NULL または未定義の場合、または Total.NO_FILTER の場合、フィルターは提供されません。 アプリケーションでフィルターが提供されないと、フィルターはデフォルトで未定義になります。 グループ引数を指定する場合は、NULL または Total.NO_FILTER のいずれかを指定し、フィルターなしを指示する必要があります。
レポートでは多くの場合、現在のグループ化レベルの合計を表示する必要があります。 例えば、あるレポートがお客様および発注でグループ化され、明細レコードが発注の明細品目を表していると仮定します。 各明細品目には、以下の集約のように、単価および数量があります。
この集約では、現在のグループでの値を合計しています。 フッターには、その発注の明細品目の合計が表示されます。 お客様フッターには、そのお客様のすべての発注の全明細品目の合計が表示されます。 さらに、レポート・フッターには、すべてのお客様の全明細品目の合計が表示されます。
ただし、アプリケーションが別のグループ化レベルの合計にアクセスする必要がある場合があります。 例えば、ある発注の合計金額を、そのお客様の全発注のパーセンテージで確認する必要がある場合などです。 この場合、現在のグループ以外のグループの合計にアクセスする必要があります。 これは、以下のようにグループ引数を使用して実行できます。
グループ引数には、以下のいずれかを指定できます。
以下の例には、3 種類のグループ引数が示されています。
Total.sum( row["myCol"] null, null ); // Current group Total.sum( row["myCol"], null, "Customer" ); // By name Total.sum( row["myCol"], null, "row[`custID']" ); // By group key Total.sum( row["myCol"], null, 1 ); // By group index Total.sum( row["myCol"], null, "Overall" ); // Grand totals Total.sum( row["myCol"], null, 0 ); // Grand totals
グループ引数を使用する場合には、フィルター引数を指定する必要があります。 フィルタリングが不必要である場合は、フィルターの値に NULL を指定します。 グループ指標は、引用符で囲まないでください。 数値として指定する必要があります。 つまり、1 がレベル 1 のグループを意味する一方で、"1" は "1" という名前のグループを意味します。
OVERALL
この集約関数は、算術平均値を計算します。 式により数値が評価される場合、この関数はそれらの数値の平均を戻します。 式により日付が評価される場合、この関数は平均の日付を戻します。
Total.ave( expr [, filter [, group ]] )
この関数は、指定した式の平均値を戻します。 行がない場合は NULL を戻します。
以下のステートメントでは、あるクラス内の学生の平均年齢を戻します。
クラス内の学生の平均の誕生日を戻す場合は、以下のステートメントを使用します。
Total.median 集約
Total.mode 集約
Total.stdDev 集約
この関数は、グループ内の行数をカウントします。
Total.count( [ filter [, group ]] )
この例では、クラス内の男性および女性の学生数をカウントします。 2 つのデータ項目を作成する必要があります。 最初の項目は次のように設定します。
2 番目の項目は次のように設定します。
Total.sum 集約
この関数は、グループまたはデータ・セット内の異なる値の数を計算します。 expr 引数には、その値のグループ化に使用する式を指定します。 この式は、データ行の列を参照します。 NULL 値は、1 つの異なる値としてカウントされます。
Total.countDistinct ( expr [, filter [, group ]] )
グループまたはデータ・セット内の異なる値の数。 行がない場合はゼロを戻します。
学生のグループで表現される異なる国の数を調べると仮定します。 以下の式を使用したデータ項目を定義できます。
このステートメントにおける row.Country は、学生の母国の名前またはコードが収容された列です。 一部の行には NULL が含まれている場合があり、母国が不明であることを示します。 以下のステートメントを使用すると、そのような行がカウントから除外されます。
Total.count 集約
この集約関数は、データ・セットにある最初の値を戻します。 これは、テーブルまたはリスト用に定義されたソート順を使用して行を取り出す場合に、そのデータ・セットから取り出された最初の値です。
Total.first( expr [, filter [, group ]] )
この関数は、行のシーケンスにある最初の値を戻し、そのデータ・セットに行がない場合は NULL を戻します。
レポートで、ある期間内における指定の株式の取り引きをリストすると仮定します。 以下のステートメントでは、その株式の最も古い購入を表示します。
Total.max 集約
Total.min 集約
この関数は、指定の数値フィールドの値が下位 n 個の数値の 1 つであるかどうかを示す boolean を戻します。
Total.isBottomN( expr, n, [, filter [, group ]] )
この関数は、TRUE または FALSE を戻します。 この関数は、数値フィールド内の値がこの列内のすべての値の下位 n 個に含まれる場合に TRUE を戻します。
レポートの列に 5 つの行があり、1、2、3、4、および 5 の値が含まれていると仮定します。Total.isBottomN(expr, 2) は、その列の下位 2 つの数値である 1 または 2 が expr で示されるフィールドに含まれているかどうかテストします。
この関数は、指定した数値フィールドの値が列内のすべての値の下位 n パーセントに含まれているかどうかを示す boolean を戻します。
Total.isBottomNPercent( expr, n, [, filter [, group ]] )
この関数は、TRUE または FALSE を戻します。 この関数は、フィールド内の値がこの列内のすべての値の下位 n パーセントに含まれる場合に TRUE を戻します。
レポートの列に 5 つの行があり、1、2、3、4、および 5 の値が含まれていると仮定します。 Total.isBottomNPercent(expr, 60) は、その列の下位 60 パーセントの数値である 1、2 または 3 が expr で示されるフィールドに含まれているかどうかテストします。
この関数は、指定の数値フィールドの値が上位 n 個の数値の 1 つであるかどうかを示す boolean を戻します。
Total.isTopN( expr, n, [, filter [, group ]] )
この関数は、TRUE または FALSE を戻します。 この関数は、数値フィールド内の値がこの列内のすべての値の上位 n 個に含まれる場合に TRUE を戻します。
レポートの列に 5 つの行があり、1、2、3、4、および 5 の値が含まれていると 仮定します。Total.isTopN(expr, 2) は、その列の上位 2 つの数値である 4 または 5 が expr で示されるフィールドに含まれているかどうかテストします。
この関数は、指定した数値フィールドの値が列内のすべての値の上位 n パーセントに含まれているかどうかを示す boolean を戻します。
Total.isTopNPercent( expr, n, [, filter [, group ]] )
この関数は、TRUE または FALSE を戻します。 この関数は、フィールド内の値がこの列内のすべての値の上位 n パーセントに含まれる場合に TRUE を戻します。
レポートの列に 5 つの行があり、1、2、3、4、および 5 の値が含まれていると仮定します。 Total.isTopNPercent(expr, 60) は、その列の上位 60 パーセントの数値である 3、4 または 5 が expr で示されるフィールドに含まれているかどうかテストします。
この関数は、データ・セットにある最後の値を戻します。 これは、テーブルまたはリスト用に定義されたソート順を使用して行を取り出す場合に、そのデータ・セットから取り出された最後の値です。
Total.last( expr [, filter [, group ]] )
この関数は、行のシーケンスにある最後の値を戻し、そのデータ・セットに行がない場合は NULL を戻します。
レポートで、ある期間内における指定の株式の取り引きをリストすると仮定します。 以下のステートメントでは、その株式の最新の譲渡を表示します。
Total.first 集約
Total.max 集約
Total.min 集約
この関数は、指定した式の最大値を計算します。 各行ごとに式が評価され、最大値が保持されます。 この関数では、数値、日付、またはストリングが使用可能です。
Total.max( expr [, filter [, group ]] )
この関数は、指定した式の最大値を戻します。 行がない場合は NULL を戻します。
以下のステートメントでは、クラス内の最高齢の学生を検索しています。
Total.first 集約
Total.min 集約
この集約関数は、数学的中央値を計算します。 値の半分は中央値の上になり、半分は下になります。
Total.median( expr [, filter [, group ]] )
この関数は、指定した式の中央値を戻します。 行がない場合は NULL を戻します。
以下のステートメントでは、クラス内の学生の年齢の中央値を戻します。
また、クラス内の学生の誕生日の中央値を戻す場合は、以下のステートメントを使用します。
Total.ave 集約
Total.mode 集約
Total.stdDev 集約
この集約関数は、指定した式の最小値を計算します。 各行ごとに式が評価され、最小値が保持されます。 この関数では、単純型の数値、日付、またはストリングが使用可能です。
Total.min( expr [, filter [, group ]] )
この関数は、指定した式の最小値を戻します。 行がない場合は NULL を戻します。
以下のステートメントでは、あるクラス内の最年少の学生の年齢を戻します。
Total.first 集約
Total.max 集約
この集約関数は、数学モード値を計算します。 モードとは、データ内で最も頻繁に出現する値です。 例えば、シーケンス {1, 2, 3, 2, 4, 7} においては、2 が 2 回出現し、その他の数が 1 回のみであるため、2 がモードです。 シーケンス {1,2,3,2,3} など、データ・セットに複数のモードがある場合、mode 集約は NULL を戻します。
Total.mode( expr [, filter [, group ]] )
この関数は、指定した式のモード値を戻します。 行がない場合、またはデータに複数のモードがある場合は、NULL を戻します。
以下のステートメントでは、あるクラス内の学生の最多人数の年齢を戻します。
Total.ave 集約
Total.median 集約
Total.stdDev 集約
この集約関数は、移動平均を計算します。 expr 引数には平均する値を指定し、window 引数には計算対象にする行数を指定します。 各行の平均は、コンテキストにより決定される順序 (通常はリストまたはテーブルの要素のソート順で指定される順序) で算出されます。
Total.movingAve( expr, window [, filter [, group ]] )
この関数は、指定した式の移動平均値を戻します。 行がない場合は NULL を戻します。
レポートで、株式の毎日の価格をリストすると仮定します。 最近の 5 日間におけるその株式の移動平均を表示するには、以下のステートメントを使用します。
Total.ave 集約
Total.median 集約
Total.mode 集約
Total.stdDev 集約
この関数は値のセットを検査し、そのセット内のすべての値における指定したパーセンタイルに該当する値を戻します。 例えば、あるテストのすべてのスコアにおける 90 のパーセンタイルを表すスコアを確認する場合などです。
この関数は、分析対象値のセットにおける指定したパーセンタイルに該当する値を戻します。
以下のステートメントでは、50 パーセンタイルのスコア値を戻します。
指定した列内のテスト・スコアのセットが 10、20、30、40、および 50 である場合、このステートメントでは 30 を戻します。
この関数は、指定したフィールド内の値のパーセンテージ・ランキングを計算します。
percentRank( expr, filter [, group ]] )
この関数は、指定したフィールド内の値のパーセンテージ・ランキングを戻します。 戻り値は、ゼロから 1 の範囲です。
以下のステートメントでは、列内のすべてのスコアにおけるパーセント・ランキングを戻します。
評価範囲内のスコアが 10、10、20、および 50 であり、このステートメントが含まれているセル内のスコアが 30 である場合、値の半分が 20 の上にあり、半分が 20 の下にあるため、戻り値は .5 です。
この関数は、t を計算します。
percentSum( expr [, filter [, group ]] )
この関数は、範囲内のすべての値の合計に対してこの値が寄与するパーセンテージを戻します。
以下のステートメントでは、全発注金額の合計に対する、この発注金額の寄与のパーセンテージを戻します。
この関数は、定義された値セット内の値が、そのセット内の値の 0%、25%、50%、75%、または 100% より大きいか計算します。
quartile( expr, quartile, [, filter [, group ]] )
この関数は、指定した四分位数に含まれる、指定したセット内の値を戻します。
以下のステートメントでは、75% より小さく 25% より大きい発注金額を戻します。
この関数は、値のセット内での値のランクを計算します。 ランキング値の範囲は、1 からそのセット内の値の数です。 2 つの値が同一である場合、それらは同一のランキングになります。
rank( expr [, filter [, group ]] )
この関数は、値のランキングを反映した整数を戻し、範囲は 1 から値セット内の項目数です。
以下のステートメントでは、OrderAmt 列内のすべての発注金額における OrderAmt フィールドのランクを戻します。
この関数は、実行中の行数を計算します。
runningCount( filter [, group ]] )
この関数は、実行中の行数を戻します。
以下のステートメントでは、レポートの実行数を戻します。
Total.count 集約
この集約関数は、数値のシーケンスの統計標準偏差を計算します。 標準偏差とは、値のセットの分布の尺度です。
Total.stdDev( expr [, filter [, group ]] )
この関数は、指定した式の標準偏差を戻します。 行がない場合は NULL を戻します。
Total.ave 集約
Total.median 集約
Total.mode 集約
この集約関数は、グループ内の各行の値を加算することにより、結果として合計を計算します。 各行の値は、expr 引数で指定された式を使用して計算されます。 合計は、そのすべての値を加算することにより取得します。
Total.sum( expr [, filter [, group ]] )
指定した式の合計。 行がない場合はゼロを戻します。
以下のステートメントでは、あるお客様の発注金額を合計します。
Total.count 集約
この集約関数は、数値のシーケンスの統計分散を計算します。 分散とは、値のセットの分布の尺度です。
Total.variance( expr [, filter [, group ]] )
この関数は、指定した式の分散を戻します。 行がない場合は NULL を戻します。
Total.ave 集約
Total.median 集約
Total.mode 集約
Total.stdDev 集約
この集約関数は、数学的加重平均を計算します。 expr または weight 引数のいずれかが NULL と評価された場合、その行は平均から除外されます。
Total.weightedAve( expr, weight [, filter [, group ]] )
この関数は、指定した式の加重平均値を戻します。 行がない場合は NULL を戻します。
会計アプリケーションにより、別々の時間に購入される指定の株式のバッチを追跡すると仮定します。 購入価格およびその価格での購入株数は、各バッチごとに異なります。 以下のステートメントでは、購入価格の加重平均を計算しています。
Total.ave 集約
Total.median 集約
Total.mode 集約
Total.stdDev 集約
![]() ![]() |