tencent cloud

Data Lake Compute

集約関数

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-25 12:00:07

APPROX_COUNT_DISTINCT

関数構文:
APPROX_COUNT_DISTINCT(<expr> any [, <relativeSD> integer|double|decimal])
サポートエンジン:SparkSQL
使用説明:HyperLogLog++が推定した基数を返します。relativeSDは許容される最大相対標準偏差を定義します。
戻り値の型:bigint
例:
SELECT approx_count_distinct(col1) FROM (VALUES (1), (1), (2), (2), (3)) tab(col1);
3

AVG

関数構文:
AVG(<expr> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された平均値を返します。
戻り値の型:double
例:
> SELECT avg(col) FROM (VALUES (1), (2), (3)) AS tab(col);
2.0
> SELECT avg(col) FROM (VALUES (1), (2), (NULL)) AS tab(col);
1.5

CORR

関数構文:
CORR(<expr> integer|double|decimal, <expr> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:一連の数値ペア間のピアソン相関係数を返します。
戻り値の型:double
例:
> SELECT corr(c1, c2) FROM (VALUES (3, 2), (3, 3), (6, 4)) as tab(c1, c2);
0.8660254037844387

COUNT

関数構文:
COUNT(*)
COUNT([DISTINCT] <col1> ANY, <col2> ANY, ...)
サポートエンジン:SparkSQL、Presto
使用説明: COUNT(*):検索された行の総数を返します。nullを含む行も含まれます。 COUNT(<col1> ANY, <col2> ANY, ...):指定された式がすべて非nullである行数を返します。 COUNT([DISTINCT] <col1> ANY,<col2> ANY, ...):指定された式が一意かつ非nullである行数を返します。
戻り値の型:integer
例:
> SELECT count(*) FROM (VALUES (NULL), (5), (5), (20)) AS tab(col);
4
> SELECT count(col) FROM (VALUES (NULL), (5), (5), (20)) AS tab(col);
3
> SELECT count(DISTINCT col) (FROM VALUES (NULL), (5), (5), (10)) AS tab(col);
2

COUNT_IF

関数構文:
COUNT_IF(<expr> ANY)
サポートエンジン:SparkSQL、Presto
使用説明:式がTRUEである行数を返します。
戻り値の型:int
例:
> SELECT count_if(col % 2 = 0) FROM (VALUES (NULL), (0), (1), (2), (3)) AS tab(col);
2
> SELECT count_if(col IS NULL) FROM (VALUES (NULL), (0), (1), (2), (3)) AS tab(col);
1

COVER_POP

関数構文:
COVAR_POP(<expr1> integer|double|decimal, <expr2> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:一組の数値ペアの母共分散を返します。
戻り値の型:double
例:
> SELECT covar_pop(c1, c2) FROM (VALUES (1,1), (2,2), (3,3)) AS tab(c1, c2);
0.6666666666666666

COVER_SAMP

関数構文:
COVAR_SAMP(<expr1> integer|double|decimal, <expr2> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:一組の数値ペアの標本共分散を返します。
戻り値の型:double
例:
> SELECT covar_samp(c1, c2) FROM (VALUES (1,1), (2,2), (3,3)) AS tab(c1, c2);
1.0

FIRST_VALUE

関数構文:
FIRST_VALUE(<expr> T[, <isIgnoreNull> boolean])
サポートエンジン:SparkSQL、Presto
使用説明:exprの行の最初の値を返します。isIgnoreNullがtrueの場合、null以外の値のみが返されます。
戻り値の型:T
例:
> SELECT first_value(col) FROM (VALUES (10), (5), (20)) AS tab(col);
10
> SELECT first_value(col) FROM (VALUES (NULL), (5), (20)) AS tab(col);
NULL
> SELECT first_value(col, true) FROM (VALUES (NULL), (5), (20)) AS tab(col);
5

FIRST

関数構文:
FIRST(<expr> T[, <isIgnoreNull> boolean])
サポートエンジン:SparkSQL
使用説明:exprの行の最初の値を返します。isIgnoreNullがtrueの場合、null以外の値のみが返されます。
戻り値の型:T
例:
> SELECT first(col) FROM (VALUES (10), (5), (20)) AS tab(col);
10
> SELECT first(col) FROM (VALUES (NULL), (5), (20)) AS tab(col);
NULL
> SELECT first(col, true) FROM (VALUES (NULL), (5), (20)) AS tab(col);
5

KURTOSIS

関数構文:
KURTOSIS(<expr> integer|double|decimal)
サポートエンジン:SparkSQL
使用説明:グループの値に基づいて計算された尖度値を返します。
戻り値の型:double
例:
> SELECT kurtosis(col) FROM (VALUES (-10), (-20), (100), (1000)) AS tab(col);
-0.7014368047529627
> SELECT kurtosis(col) FROM (VALUES (1), (10), (100), (10), (1)) as tab(col);
0.19432323191699075s

LAST_VALUE

関数構文:
LAST_VALUE(<expr> T[, <isIgnoreNull> boolean])
サポートエンジン:SparkSQL、Presto
使用説明:exprの行の最後の値を返します。isIgnoreNullがtrueの場合、null以外の値のみが返されます。
戻り値の型:T
例:
> SELECT last_value(col) FROM (VALUES (10), (5), (20)) AS tab(col);
20
> SELECT last_value(col) FROM (VALUES (10), (5), (NULL)) AS tab(col);
NULL
> SELECT last_value(col, true) FROM (VALUES (10), (5), (NULL)) AS tab(col);
5

LAST

関数構文:
LAST(<expr> T[, <isIgnoreNull> boolean])
サポートエンジン:SparkSQL
使用説明:exprの行の最後の値を返します。isIgnoreNullがtrueの場合、null以外の値のみが返されます。
戻り値の型:T
例:
> SELECT last(col) FROM (VALUES (10), (5), (20)) AS tab(col);
20
> SELECT last(col) FROM (VALUES (10), (5), (NULL)) AS tab(col);
NULL
> SELECT last(col, true) FROM (VALUES (10), (5), (NULL)) AS tab(col);
5

MEAN

関数構文:
MEAN(<expr> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された平均値を返します。
戻り値の型:double
例:
> SELECT mean(col) FROM (VALUES (1), (2), (3)) AS tab(col);
2.0
> SELECT mean(col) FROM (VALUES (1), (2), (NULL)) AS tab(col);
1.5

PERCENTILE

関数構文:
PERCENTILE(<col> ANY, <percentage> integer|double|decimal|array<double> [, <frequency> integer])
サポートエンジン:SparkSQL、Presto
使用説明:指定されたパーセンテージ下での数値列colの正確なパーセンタイル値を返します。percentage値は0.0から1.0の間でなければなりません。frequencyは正の整数である必要があります。
戻り値の型:double
例:
> SELECT percentile(col, 0.3) FROM (VALUES (0), (10)) AS tab(col);
3.0
> SELECT percentile(col, array(0.25, 0.75)) FROM (VALUES (0), (10)) AS tab(col);
[2.5,7.5]

SKEWNESS

関数構文:
SKEWNESS(<col> integer|double|decimal)
サポートエンジン:SparkSQL
使用説明:グループの値に基づいて計算された歪度を返します。
戻り値の型:double
例:
> SELECT skewness(col) FROM (VALUES (-10), (-20), (100), (1000)) AS tab(col);
1.1135657469022011
> SELECT skewness(col) FROM (VALUES (-1000), (-100), (10), (20)) AS tab(col);
-1.1135657469022011

PERCENTILE_APPROX

関数構文:
PERCENTILE_APPROX(<col> integer|double|decimal, <percentage> double|array<double>[, <accuracy> integer])
サポートエンジン:SparkSQL、Presto
使用説明:数値列colの近似パーセンタイルを返します。この値は、colの値を最小から最大に並べ替えた際に、指定したパーセンテージ以下の値となる最小値です。percentageの値は0.0から1.0の間でなければなりません。accuracyパラメータ(デフォルト値:10000)は正の数値リテラルで、メモリ使用量と引き換えに近似精度を制御します。精度値が高いほど近似精度が向上し、1.0/accuracyが近似相対誤差となります。percentageが配列の場合、配列内の各値は0.0から1.0の間でなければなりません。この場合、指定されたpercentage配列に対応する列colの近似パーセンタイル配列が返されます。
戻り値の型:integer |array<integer>
例:
> SELECT percentile_approx(col, array(0.5, 0.4, 0.1), 100) FROM (VALUES (0), (1), (2), (10)) AS tab(col);
[1,1,0]
> SELECT percentile_approx(col, 0.5, 100) FROM (VALUES (0), (6), (7), (9), (10)) AS tab(col);
7

APPROX_PERCENTILE

関数構文:
APPROX_PERCENTILE(<col> integer|double|decimal, <percentage> double|array<double>[, <accuracy> integer])
サポートエンジン:SparkSQL、Presto
使用説明:数値列colの近似パーセンタイルを返します。この値は、colの値を最小から最大に並べ替えた際に、指定したパーセンテージ以下の値となる最小値です。percentageの値は0.0から1.0の間でなければなりません。accuracyパラメータ(デフォルト値:10000)は正の数値リテラルで、メモリ使用量と引き換えに近似精度を制御します。精度値が高いほど近似精度が向上し、1.0/accuracyが近似相対誤差となります。percentageが配列の場合、配列内の各値は0.0から1.0の間でなければなりません。この場合、指定されたpercentage配列に対応する列colの近似パーセンタイル配列が返されます。
戻り値の型:integer |array<integer>
例:
> SELECT APPROX_PERCENTILE(col, array(0.5, 0.4, 0.1), 100) FROM (VALUES (0), (1), (2), (10)) AS tab(col);
[1,1,0]
> SELECT APPROX_PERCENTILE(col, 0.5, 100) FROM (VALUES (0), (6), (7), (9), (10)) AS tab(col);
7

MAX

関数構文:
MAX(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:colの最大値を返します。
戻り値の型:colと一致します。
例:
> SELECT max(col) FROM (VALUES (10), (50), (20)) AS tab(col);
50

MAX_BY

関数構文:
MAX_BY(<x> T, <y> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:yの最大値に関連付けられたx値を返します。
戻り値の型:T
例:
> SELECT max_by(x, y) FROM (VALUES (('a', 10)), (('b', 50)), (('c', 20))) AS tab(x, y);
b

MIN

関数構文:
MIN(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:colの最小値を返します。
戻り型:colと一致
例:
> SELECT min(col) FROM (VALUES (10), (50), (20)) AS tab(col);
10

MIN_BY

関数構文:
MIN_BY(<x> T, <y> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:yの最小値に関連付けられたx値を返します。
戻り値の型:T
例:
> SELECT min_by(x, y) FROM (VALUES (('a', 10)), (('b', 50)), (('c', 20))) AS tab(x, y);
a

STD

関数構文:
STD(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto

使用説明

SparkSQL:グループの値に基づいて計算された標本標準偏差を返します。
Presto:グループの値に基づいて計算された母標準偏差を返します。
戻り値の型:double
例:
> SELECT std(col) FROM (VALUES (1), (2), (3)) AS tab(col);
1.0

STDDEV

関数構文:
STDDEV(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された標本標準偏差を返します。
戻り値の型:double
例:
> SELECT stddev(col) FROM (VALUES (1), (2), (3)) AS tab(col);
1.0

STDDEV_POP

関数構文:
STDDEV_POP(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された母集団標準偏差を返します。
戻り値の型:double
例:
> SELECT stddev_pop(col) FROM (VALUES (1), (2), (3)) AS tab(col);
0.816496580927726

STDDEV_SAMP

関数構文:
STDDEV_SAMP(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された標本標準偏差を返します。
戻り値の型:double
例:
> SELECT stddev_samp(col) FROM (VALUES (1), (2), (3)) AS tab(col);
1.0

SUM

関数構文:
SUM(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された合計値を返します。
戻り型:colと一致
例:
> SELECT sum(col) FROM (VALUES (5), (10), (15)) AS tab(col);
30
> SELECT sum(col) FROM (VALUES (NULL), (10), (15)) AS tab(col);
25
> SELECT sum(col) FROM (VALUES (NULL), (NULL)) AS tab(col);
NULL

VARIANCE

関数構文:
VARIANCE(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された標本分散を返します。
戻り値の型:double
例:
> SELECT VARIANCE(col) FROM (VALUES (1), (2), (3)) AS tab(col);
1.0

VAR_POP

関数構文:
VAR_POP(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された母分散を返します。
戻り値の型:double
例:
> SELECT var_pop(col) FROM (VALUES (1), (2), (3)) AS tab(col);
0.6666666666666666

VAR_SAMP

関数構文:
VAR_SAMP(<col> integer|double|decimal)
サポートエンジン:SparkSQL、Presto
使用説明:グループの値に基づいて計算された標本分散を返します。
戻り値の型:double
例:
> SELECT var_samp(col) FROM (VALUES (1), (2), (3)) AS tab(col);
1.0

HISTOGRAM_NUMERIC

関数構文:
HISTOGRAM_NUMERIC(<col> integer, <nb> integer)
サポートエンジン:Presto
使用説明:nb個の不均等間隔のビンを使用して、グループ内の数値列のヒストグラムを計算します。出力は、ビンの中心と高さを表すサイズnbの(x、y)座標配列です。
戻り型:array<struct {'x','y'}>
例:
> SELECT histogram_numeric(col, 5) FROM (VALUES (0), (1), (2), (10)) AS tab(col);
[{"x":0,"y":1.0},{"x":1,"y":1.0},{"x":2,"y":1.0},{"x":10,"y":1.0}]

COLLECT_LIST

関数構文:
COLLECT_LIST(<col> T)
サポートエンジン:SparkSQL、Presto
使用説明:非ユニーク要素のリストを収集して返します。
戻り値の型:array<T>
例:
> SELECT collect_list(col) FROM (VALUES (1), (2), (1)) AS tab(col);
[1,2,1]

COLLECT_SET

関数構文:
COLLECT_SET(<col> T)
サポートエンジン:SparkSQL、Presto
使用説明:ユニークな要素のセットを収集して返します。
戻り値の型:array<T>
例:
> SELECT collect_set(col) FROM (VALUES (1), (2), (1)) AS tab(col);
[1,2]

COUNT_MIN_SKETCH

関数構文:
COUNT_MIN_SKETCH(<col> T, <eps> double, <confidence> double, <seed> integer)
サポートエンジン:SparkSQL
使用説明:指定されたesp、confidence、seedを持つ列のcount min sketchを返します。結果はバイナリ形式で、使用前にCountMinSketchに逆シリアル化できます。
戻り値の型:binary
例:
> SELECT hex(count_min_sketch(col, 0.5d, 0.5d, 1)) FROM (VALUES (1), (2), (1)) AS tab(col);
0000000100000000000000030000000100000004000000005D8D6AB90000000000000000000000000000000200000000000000010000000000000000

EVERY

関数構文:
EVERY(<col> boolean)
サポートエンジン:SparkSQL、Presto
使用説明:colのすべての値がtrueの場合、trueを返します。
戻り値の型:boolean
例:
> SELECT every(col) FROM (VALUES (true), (true), (true)) AS tab(col);
true
> SELECT every(col) FROM (VALUES (NULL), (true), (true)) AS tab(col);
true
> SELECT every(col) FROM (VALUES (true), (false), (true)) AS tab(col);
false

BOOL_AND

関数構文:
BOOL_AND(<col> boolean)
サポートエンジン:SparkSQL、Presto
使用説明:colのすべての値がtrueの場合、trueを返します。
戻り値の型:boolean
例:
> SELECT bool_and(col) FROM (VALUES (true), (true), (true)) AS tab(col);
true
> SELECT bool_and(col) FROM (VALUES (NULL), (true), (true)) AS tab(col);
true
> SELECT bool_and(col) FROM (VALUES (true), (false), (true)) AS tab(col);
false

AND

関数構文:
<expr1> AND <expr2>
サポートエンジン:SparkSQL、Presto

使用説明

論理積
戻り値の型:boolean
例:
> SELECT true and true;
true
> SELECT true and false;
false
> SELECT true and NULL;
NULL
> SELECT false and NULL;
false

OR

関数構文:
<expr1> OR <expr2>
サポートエンジン:SparkSQL、Presto
使用説明:論理和
戻り値の型:boolean
例:
> SELECT true or false;
true
> SELECT false or false;
false
> SELECT true or NULL;
true
> SELECT false or NULL;
NULL

ANY

関数構文:
ANY(<col> boolean)
サポートエンジン:SparkSQL、Presto
使用説明:colの少なくとも1つの値がtrueの場合、trueを返します。
戻り値の型:boolean
例:
> SELECT any(col) FROM (VALUES (true), (false), (false)) AS tab(col);
true
> SELECT any(col) FROM (VALUES (NULL), (true), (false)) AS tab(col);
true
> SELECT any(col) FROM (VALUES (false), (false), (NULL)) AS tab(col);
false

SOME

関数構文:
SOME(<col> boolean)
サポートエンジン:SparkSQL、Presto
使用説明:colの少なくとも1つの値がtrueの場合、trueを返します。
戻り値の型:boolean
例:
> SELECT some(col) FROM (VALUES (true), (false), (false)) AS tab(col);
true
> SELECT some(col) FROM (VALUES (NULL), (true), (false)) AS tab(col);
true
> SELECT some(col) FROM (VALUES (false), (false), (NULL)) AS tab(col);
false

BOOL_OR

関数構文:
BOOL_OR(<col> boolean)
サポートエンジン:SparkSQL、Presto
使用説明:colの少なくとも1つの値がtrueの場合、trueを返します。
戻り値の型:boolean
例:
> SELECT BOOL_OR(col) FROM (VALUES (true), (false), (false)) AS tab(col);
true
> SELECT BOOL_OR(col) FROM (VALUES (NULL), (true), (false)) AS tab(col);
true
> SELECT BOOL_OR(col) FROM (VALUES (false), (false), (NULL)) AS tab(col);
false

BIT_AND

関数構文:
BIT_AND(<col> integer|bigint)
サポートエンジン:SparkSQL、Presto
使用説明:すべての非null入力値のビット単位ANDを返します。存在しない場合はnullを返します。
戻り型:colと一致
例:
> SELECT bit_and(col) FROM (VALUES (3), (5)) AS tab(col);
1

BIT_OR

関数構文:
BIT_OR(<col> integer|bigint)
サポートエンジン:SparkSQL、Presto
使用説明:すべての非null入力値のビット単位ORを返します。存在しない場合はnullを返します。
戻り型:colと一致
例:
> SELECT bit_or(col) FROM (VALUES (3), (5)) AS tab(col);
7

BIT_XOR

関数構文:
BIT_XOR(<col> integer|bigint)
サポートエンジン:SparkSQL、Presto
使用説明:すべての非null入力値のビット単位XORを返します。存在しない場合はnullを返します。
戻り型:colと一致
例:
> SELECT bit_xor(col) FROM (VALUES (3), (5)) AS tab(col);
6

ARG_MIN

関数構文:
ARG_MIN(<col1>, <col2> | expr(col2))
サポートエンジン:SparkSQL
使用説明:指定された列col1の最小値を持つ行を、指定された計算式に従って返します。
ソート可能な列名。定数の場合、任意の値が返されます。複数の最小値がある場合、ランダムに行が返されます。
戻り値の型:col2またはexpr(col2)の型と一致します。
例:
> SELECT arg_min(dt, uid) from values (1, 'm1'), (2, 't2'), (3, 'z3') as tab(dt, uid);
m1
> SELECT arg_min(dt, upper(uid)) from values (1, 'm1', 1), (2, 't2', 1), (3, 'z3', 2) as tab(dt, uid, gid) group by gid;
M1
Z3

ARG_MAX

関数構文:
ARG_MAX(<col1>, <col2> | expr(col2))
サポートエンジン:SparkSQL
使用説明:指定された列col1の最大値を持つ行を、指定された計算式に従って返します。
col1: ソート可能な列名。定数の場合、任意の値が返されます。最大値が複数ある場合、ランダムに行が返されます。
戻り値の型:col2またはexpr(col2)の型と一致します。
例:
> SELECT arg_max(dt, uid) from values (1, 'm1'), (2, 't2'), (3, 'z3') as tab(dt, uid);
z3
> SELECT arg_max(dt, upper(uid)) from values (1, 'm1', 1), (2, 't2', 1), (3, 'z3', 2) as tab(dt, uid, gid) group by gid;
T2
Z3

MAP_UNION_SUM

関数構文:
MAP_UNION_SUM(map<k, v> input)
サポートエンジン:SparkSQL
使用説明:指定した列で、mapをkey値に基づいてすべてのvalueを合計します。
注意1:nullのデータを集計することが許可されており、すべてがnullの場合、出力はnullになります。
注意2:keyのvalueがnullであることを許可し、その場合、数字0に変換されます。
戻り値の型:入力の型と一致します。
例:
> SELECT map_union_sum(ids) from values (map(1, 1)), (map(1,2)), (map(2,1)) as tab(ids);
{1:3,2:1}
> SELECT idx, map_union_sum(ids) from values (map(1, 1), 1), (map(1,2), 1), (map(2,1), 1) as tab(ids, idx) group by idx;
1 {1:3,2:1}


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック