この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

集計関数

値の計算を行うには、集計関数を使用します。

空集合に集計関数を使用すると、null が返されます。たとえば、外部共通グルーピングの不一致列で集計関数を使用すると、空集合になる可能性があります。

集計関数の前に group by がない場合、各行が独自のグループとして処理されます。

次の表は、サポートされる集計関数の一覧です。

集計関数 説明
avg() または average() 数値項目の平均値を返します。
たとえば、平均マイル数を計算するには、次のステートメントを使用します。
1a1 = group a by (origin, dest);
2a2 = foreach a1 generate origin as origin, dest as destination, average(miles) as miles;
count() クエリ条件に一致する行数を返します。
たとえば、航空会社数を計算するには、次のステートメントを使用します。
1q = foreach q generate 'carrier' as 'carrier', count() as 'count';
count() 関数は、group または cogroup ステートメントへの入力ストリームで実行されます。新しくグループ化されたストリームやグループ化されていないストリームでは実行されません。
1a = load "0Fcyy000000002qCAA/0Fcyy000000002WCAQ";
2a1 = group a by (Year);
3q = foreach a1 generate count(a) as countYear, count() as count, Year as year;
4q = limit q 20;
a1 は新しくグループ化されたストリームであるため、count() 関数に渡すことはできません。
first() 最初のタプルの値を返します。期待どおりに動作させるには、並び替え順を把握しているか、その基準の値が集合内のすべてのタプルで同じであることがわかっている必要があります。

たとえば、出発地と目的地の各組み合わせ間の距離を計算するには、次のステートメントを使用します。

1a1 = group a by (origin, dest);
2a2 = foreach a1 generate origin as origin, dest as destination, first(miles) as miles;
last() 最後のタプルの値を返します。

たとえば、出発地と目的地の各組み合わせ間の距離を計算するには、次のステートメントを使用します。

1a1 = group a by (origin, dest);
2a2 = foreach a1 generate origin as origin, dest as destination, last(miles) as miles;
max() 項目の最大値を返します。

この関数は、引数として基準のみを取ります。ディメンションを取ることはできません。

median() グループ化された数値型の式を受け入れ、中央値を返します (並び替えた順序で null 値は無視)。1 つの中央値が特定できない場合 (null 以外の値の数が偶数の場合)、median は中央値に最も近い 2 つの数値の平均を返します。

式には「xInt」や「price」など任意の識別子を使用できますが、price/100 または ceil(distance) などの複雑な式や、2.5 などのリテラルは使用できません。

1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, median(miles) as medMiles;
4limit q 5;
median の前に group by 句がない場合、個々の行が独自のグループとして処理されます。
1q = load "data/airline";
2q = foreach q generate dest, median(miles) as medMiles;
3limit q 5;
min() 項目の最小値を返します。

この関数は、引数として基準のみを取ります。ディメンションを取ることはできません。

sum() 数値項目の合計を返します。
1a = load "0Fbxx000000002qCAA/0Fcxx000000002WCAQ";
2a = filter a by dest in ["ORD", "LAX", "ATL", "DFW", "PHX", "DEN", "LGA"]; 
3a = group a by carrier; 
4b = foreach a generate carrier as airline, sum(miles) as miles;
unique() 一意の値の数を返します。

たとえば、航空会社の出発地数と目的地数を調べるには、次のステートメントを使用します。

1a1 = group a by carrier;
2a2 = foreach a1 generate carrier as carrier, unique(origin) as origins, unique(dest) as destinations;

unique() を使用して、テーブル比較の集計行のような集計を追加するには、ウィンドウ関数としてこれを使用することが最適な方法です。

メモ

stddev() グループで計算された標本標準偏差を返します。

グループ化された数値型の式を受け入れます。グループ内の null 以外の値の数が 1 の場合、stddev は null を返します。それ以外の場合、stddev はグループで計算された標本標準偏差を返します (null 値は無視)。

式には「xInt」や「price」など任意の数値識別子を使用できますが、price/100 または ceil(price) などの複雑な式や、2.5 などのリテラルは使用できません。

1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, stddev(miles) as stddevMiles;
4limit q 5;
stddevp() グループで計算された母標準偏差を返します。

グループ化された数値型の式を受け入れ、グループで計算された母標準偏差を返します (null 値は無視)。式には「xInt」や「price」など任意の数値識別子を使用できますが、price/100 または ceil(price) などの複雑な式や、2.5 などのリテラルは使用できません。

1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, stddevp(miles) as stddevMiles;
4limit q 5;
var() グループで計算された標本分散 (「不偏分散」とも呼ばれる) を返します。

グループ化された数値型の式を受け入れます。グループ内の null 以外の値の数が 1 の場合、var は null を返します。それ以外の場合、var はグループで計算された標本分散を返します (null 値は無視)。式には「xInt」や「price」など任意の数値識別子を使用できますが、price/100 または ceil(price) などの複雑な式や、2.5 などのリテラルは使用できません。

1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, var(miles) as varMiles;
4limit q 5;
varp() グループで計算された母分散 (「有偏分散」とも呼ばれる) を返します。

グループ化された数値型の式を受け入れ、グループで計算された母分散を返します (null 値は無視)。式には「xInt」や「price」など任意の数値識別子を使用できますが、price/100 または ceil(price) などの複雑な式や、2.5 などのリテラルは使用できません。

1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, varp(miles) as varMiles;
4limit q 5;
percentile_disc() 行セット全体または行セットの個別のパーティション内で並び替えられた値の特定のパーセントを計算します。完全な構文は次のとおりです。

percentile_disc(p as numeric) within group (order by expr [asc | desc])

percentile_disc 関数はグループ化された数値型の式 expr を受け入れ、指定された順序 (asc または desc) で並び替えます。順序が指定されていない場合、デフォルトの順序は asc です。並び替えた順序でグループ内の値の (100*p)% の位置にある値を返します (null 値は無視)。

p には、小数点以下 8 桁の精度を持つ 0 ~ 1 の任意の実数値を指定できます。expr には「xInt」や「price」など任意の識別子を使用できますが、price/100 または ceil(distance) などの複雑な式や、2.5 などのリテラルは使用できません。

expr に正確な 100*p パーセントの位置の値がない場合、percentile_disc は並び替え順で expr の次の位置にある値を返します。

たとえば、Mea1 に値 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] が含まれる場合、次の値が返されます。

1percentile_disc(0.25) within group (order by Mea1 asc) = 4
2percentile_disc(0.25) within group (order by Mea1 desc) = 9
3percentile_disc(0) within group (order by Mea1 asc) = 0
4percentile_disc(1) within group (order by Mea1 asc) = 13

クエリ例:

1q = load "data/airline";
2q = group q by dest;         
3q = foreach q generate dest, percentile_disc(0.25) within group (order by miles desc) as perMiles;
4limit q 5;
percentile_cont() 列の値の連続型分散に基づいてパーセントを計算します。完全な構文は次のとおりです。

percentile_cont(p as numeric) within group (order by expr [asc | desc])

percentile_cont 関数はグループ化された数値型の式 expr を受け入れ、指定された順序 (asc または desc) で並び替えます。順序が指定されていない場合、デフォルトの順序は asc です。並び替えた順序でグループ内の値の (100*p)% の位置にある値を返します (null 値は無視)。

p には、0 ~ 1 の任意の実数値を指定できます。expr には「xInt」や「price」など任意の識別子を使用できますが、price/100 または ceil(distance) などの複雑な式や、2.5 などのリテラルは使用できません。

expr に正確な 100*p パーセントの位置の値がない場合、percentile_contexpr 内でその位置に最も近い 2 つの値から線形補間された値を返します。

たとえば、Mea1 に値 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] が含まれる場合、次の値が返されます。

1percentile_cont(0.25) within group (order by Mea1 asc) = 3.25
2percentile_cont(0.25) within group (order by Mea1 desc) = 9.75
3percentile_cont(0) within group (order by Mea1 asc) = 0
4percentile_cont(1) within group (order by Mea1 asc) = 13

クエリ例:

1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, percentile_cont(0.25) within group (order by miles) as perMiles;
4limit q 5;
regr_slope(y, x)

単純な線形回帰関数 regr_slope は、グループ化した連動数値式 y およびグループ化した独立数値式 x を受け入れ、回帰直線の傾きを返します。regr_slope 関数では、両方とも null ではない (x, y) 値のペアのみが考慮され、指定グループ内に存在する該当ペアが 2 個未満の場合は null が返されます。単純な線形回帰関数は、単純なグループ化された値の集計関数のように機能しますが、共通グループでは機能しません。

クエリ例:

1q = load "data/sales";
2q = group q by all;
3q = foreach q generate regr_slope('profit', 'sales') as slope;
4limit q 1;
regr_intercept(y, x)

単純な線形回帰関数 regr_intercept は、グループ化した連動数値式 y およびグループ化した独立数値式 x を受け入れ、回帰直線の Y 切片を返します。regr_intercept 関数では、両方とも null ではない (x, y) 値のペアのみが考慮され、指定グループ内に存在する該当ペアが 2 個未満の場合は null が返されます。単純な線形回帰関数は、単純なグループ化された値の集計関数のように機能しますが、共通グループでは機能しません。

クエリ例:

1q = load "data/sales";
2q = group q by all;
3q = foreach q generate regr_intercept('profit', 'sales') as intercept;
4limit q 1;
regr_r2(y, x)

単純な線形回帰関数 regr_r2 は、グループ化した連動数値式 y およびグループ化した独立数値式 x を受け入れ、決定係数 (R 二乗または適合度とも呼ばれる) を返します。regr_r2 関数では、両方とも null ではない (x, y) 値のペアのみが考慮され、指定グループ内に存在する該当ペアが 2 個未満の場合は null が返されます。単純な線形回帰関数は、単純なグループ化された値の集計関数のように機能しますが、共通グループでは機能しません。

クエリ例:

1q = load "data/sales";
2q = group q by all;
3q = foreach q generate regr_r2('profit', 'sales') as r2;
4limit q 1;