Aggr - チャート関数
Aggr() は、指定された軸上で計算された数式の値の配列を返します。たとえば、顧客別、地域別 sales の最大値です。
Aggr 関数はネストされた集計に使用され、最初のパラメーター (内部集計) は軸の値ごとに 1 回計算されます。軸は、2 番目のパラメーター (および後続のパラメーター) で指定されます。
さらに、Aggr 関数は外部の集計関数で囲む必要があり、Aggr の結果の配列をネストされる集計への入力として使用します。
構文:
Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})
戻り値データ型: dual
引数:
引数 | 説明 |
---|---|
expr |
集計関数で構成される数式。デフォルトで、集計関数は選択されたレコード セットに対して集計を行います。 |
StructuredParameter |
StructuredParameter は、軸とともに、任意で(Dimension(Sort-type, Ordering)) 形式のソート基準で構成されています。 軸は単一項目で、数式にすることはできません。軸を使用して、Aggr 数式で計算される値の配列が決定されます。 ソート基準が含まれている場合は、軸について計算された Aggr 関数により、作成された値の配列がソートされます。これは、Aggr 関数を囲んでいる数式の結果にソート順序が影響する場合に重要です。 ソート基準の使用法について詳しくは、「構造化パラメータの軸へのソート基準の追加」を参照してください。 |
SetExpression | デフォルトでは、集計関数は選択されたレコード セットに対して集計を行います。Set 分析数式でレコード セットを定義することも可能です。 |
DISTINCT |
expression 引数の前に distinct 修飾子が配置されている場合、あるいは修飾子がまったく使用されていない場合は、軸の値の組み合わせごとに 1 つの戻り値のみ生成されます。これは正常な集計方法で、これらの異なる組み合わせがそれぞれチャートの 1 行に反映されます。 |
NODISTINCT |
expression 引数の前に nodistinct 修飾子が配置されている場合、軸の値の組み合わせは、いずれも基底のデータ構造に基づいて、複数の戻り値を生成する可能性があります。軸が 1 本だけの場合、aggr 関数は、ソース データの行数と同じ数の要素を含む配列を返します。 |
Sum、Min、Avg などの基本的な集計関数では数値が 1 つ返されるのに対し、Aggr()関数は、一時的な段階の結果セット (仮想テーブル) を作成することと比較することができ、その結果セットで別の集計を行うことができます。例えば、Aggr() ステートメントで顧客別の売上を合計して平均売上値を計算し、それから加算された結果の平均値を計算することができます:Avg(TOTAL Aggr(Sum(Sales),Customer))。
制限事項:
Aggr() 関数の各軸は、単一の項目でなければならず、数式 (計算軸) にすることはできません。
基本形式において、Aggr 関数構文の引数 StructuredParameter は単一軸です。数式Aggr(Sum(Sales, Month)) により、各月の総売上高の値が返されます。ただし、別の集計関数によって囲まれている場合は、ソート基準が使用される場合を除いて、予期しない結果になる可能性があります。これは、軸によって、数値やアルファベットなどの異なる基準でソートされるからです。
Aggr 関数の StructuredParameter 引数には、数式での軸のソート基準を指定できます。この方法により、Aggr 関数によって作成される仮想テーブルにソート順序を適用します。
引数 StructuredParameter の構文は次のとおりです。
(FieldName, (Sort-type, Ordering))
構造化パラメータはネストすることができます。
(FieldName, (FieldName2, (Sort-type, Ordering)))
ソート タイプは、NUMERIC、TEXT、FREQUENCY、または LOAD_ORDER です。
各ソート タイプに関連付けられる順序タイプは次のとおりです。
ソート タイプ | 許可される順序タイプ |
---|---|
NUMERIC | ASCENDING、DESCENDING、または REVERSE |
TEXT | ASCENDING、A2Z、DESCENDING、REVERSE、または Z2A |
FREQUENCY | DESCENDING、REVERSE 、または ASCENDING |
LOAD_ORDER | ASCENDING、ORIGINAL、DESCENDING、または REVERSE |
順序タイプ REVERSE と DESCENDING は同じです。
ソート タイプ TEXT の場合、順序タイプ ASCENDING と A2Z は同じであり、DESCENDING、REVERSE、Z2A は同じです。
ソート タイプ LOAD_ORDER の場合、順序タイプ ASCENDING と ORIGINAL は同じです。
例と結果:
例 | 結果 |
---|---|
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer)) |
数式 Aggr(Sum(UnitSales*UnitPrice), Customer) は、Customer 別の売り上げの合計値で、3 つの Customer の値として、295、715、120 の値の配列を返します。 実質的には、それらの値を含む明示的なテーブルまたは列を作成することなく、値の一時的なリストを作成したことになります。 これらの値は Avg() 関数に使われ、売り上げの平均値として 376.6667 という値が算出されます(プロパティ パネルで、[プレゼンテーション] の下の [合計] を選択しておく必要があります)。 |
Aggr(NODISTINCT Max(UnitPrice), Customer) |
値の配列: 16、16、16、25、25、25、19、19。nodistinct 修飾子は、配列にはソース データの各行の要素が 1 つ含まれており、各要素が Customer と Product それぞれの最大 UnitPrice になっていることを意味します。 |
例で使用されているデータ:
Customer、Product、UnitPrice、および UnitSales を軸としたテーブルを作成します。数式をメジャーとしてテーブルに追加します。
ProductData:
LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|CC||19
] (delimiter is '|');
例と結果: 構造化パラメーター
例 | 結果 |
---|---|
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) )) |
このメジャーは、数式の構造化パラメーター引数でソート基準を使用し、過去 1 年間の月ごとの売上を計算します。 ソート基準なしの場合、数式 Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) )) の結果は、軸 Year および Month のソート方法によって異なります。必要とする結果が得られない場合もあります。 ソート タイプと順序タイプの値を軸に追加することにより、ソート基準を構造化パラメータ: (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) を参照してください。ソート タイプ NUMERIC と順序 ASCENDING により、Year および Month が数値の昇順でソートされるかどうかが決まります。 |
例で使用されているデータ:
次のロード スクリプトは、構造化パラメーターの例で使用される、順序行ありでテーブルの順序を生成します。
これらのメジャー間の違いは、テーブルまたは独立した折れ線グラフで比較することができます。
- Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))
- Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))
2 つめのメジャーは、各月の過去 1 年間の売上を出力します。