集計関数
空集合に集計関数を使用すると、null が返されます。たとえば、外部共通グルーピングの不一致列で集計関数を使用すると、空集合になる可能性があります。
集計関数の前に group by がない場合、各行が独自のグループとして処理されます。
次に、サポートされている集計関数のリストを示します。
avg() または average()
1a1 = group a by (origin, dest);
2a2 = foreach a1 generate origin as origin, dest as destination,
3 average(miles) as miles;count()
1q = foreach q generate 'carrier' as 'carrier', count() as 'count';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;first()
たとえば、出発地と目的地の各組み合わせ間の距離を計算するには、次のステートメントを使用します。
1a1 = group a by (origin, dest);
2a2 = foreach a1 generate origin as origin, dest as destination,
3 first(miles) as miles;last()
たとえば、出発地と目的地の各組み合わせ間の距離を計算するには、次のステートメントを使用します。
1a1 = group a by (origin, dest);
2a2 = foreach a1 generate origin as origin, dest as destination,
3 last(miles) as miles;max()
この関数は、引数として基準または日付を取り、最新 (最近) の値を返します。
まず、toDate() 関数を使用して、日付の形式を正しく設定します。次に例を示します。
1q = load "case";
2q = foreach q generate 'ClosedDate_Year' as 'year', toDate(ClosedDate_Year + "-"
3 + ClosedDate_Month + "-" + ClosedDate_Day, "yyyy-MM-dd") as date;
4q = group q by 'year';
5q = foreach q generate year, min('date') as 'mindate', max('date') as 'maxdate';
6q = limit q 100;median()
式には「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;1q = load "data/airline";
2q = foreach q generate dest, median(miles) as medMiles;
3limit q 5;min()
この関数は、引数として基準 または日付を取り、最も古い値を返します。
まず、toDate() 関数を使用して、日付の形式を正しく設定します。次に例を示します。
1q = load "case";
2q = foreach q generate 'ClosedDate_Year' as 'year', toDate(ClosedDate_Year + "-"
3 + ClosedDate_Month + "-" + ClosedDate_Day, "yyyy-MM-dd") as date;
4q = group q by 'year';
5q = foreach q generate year, min('date') as 'mindate', max('date') as 'maxdate';
6q = limit q 100;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,
3 unique(dest) as destinations;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 に値 [54, 35, 15, 15, 76, 87, 78] が含まれる場合、次の値が返されます。
1percentile_disc(0.5) within group (order by Mea1) == 54
2percentile_disc(0.72) within group (order by Mea1) == 78クエリ例:
1q = load "data/airline";
2q = group q by dest;
3q = foreach q generate dest, percentile_disc(0.25) within
4 group (order by miles desc) as perMiles;
5limit 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_cont は expr 内でその位置に最も近い 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
4 group (order by miles) as perMiles;
5limit 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;