組み込み関数
!
! expr - 論理否定。
例
> SELECT ! true;
false
> SELECT ! false;
true
> SELECT ! NULL;
NULL
開始 1.0.0
!=
expr1 != expr2 - expr1
が expr2
と等しくない場合は true を返し、それ以外の場合は false を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、等価比較で使用できる型である必要があります。マップ型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 1 != 2;
true
> SELECT 1 != '2';
true
> SELECT true != NULL;
NULL
> SELECT NULL != NULL;
NULL
開始 1.0.0
%
expr1 % expr2 - expr1
/ expr2
の後の余りを返します。
例
> SELECT 2 % 1.8;
0.2
> SELECT MOD(2, 1.8);
0.2
開始 1.0.0
&
expr1 & expr2 - expr1
と expr2
のビット単位 AND の結果を返します。
例
> SELECT 3 & 5;
1
開始 1.4.0
*
expr1 * expr2 - expr1
* expr2
を返します。
例
> SELECT 2 * 3;
6
開始 1.0.0
+
expr1 + expr2 - expr1
+ expr2
を返します。
例
> SELECT 1 + 2;
3
開始 1.0.0
-
expr1 - expr2 - expr1
- expr2
を返します。
例
> SELECT 2 - 1;
1
開始 1.0.0
/
expr1 / expr2 - expr1
/ expr2
を返します。常に浮動小数点除算を実行します。
例
> SELECT 3 / 2;
1.5
> SELECT 2L / 2L;
1.0
開始 1.0.0
<
expr1 < expr2 - expr1
が expr2
より小さい場合は true を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、順序付け可能な型である必要があります。たとえば、マップ型は順序付けできないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 1 < 2;
true
> SELECT 1.1 < '1';
false
> SELECT to_date('2009-07-30 04:17:52') < to_date('2009-07-30 04:17:52');
false
> SELECT to_date('2009-07-30 04:17:52') < to_date('2009-08-01 04:17:52');
true
> SELECT 1 < NULL;
NULL
開始 1.0.0
<=
expr1 <= expr2 - expr1
が expr2
以下である場合は true を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、順序付け可能な型である必要があります。たとえば、マップ型は順序付けできないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 <= 2;
true
> SELECT 1.0 <= '1';
true
> SELECT to_date('2009-07-30 04:17:52') <= to_date('2009-07-30 04:17:52');
true
> SELECT to_date('2009-07-30 04:17:52') <= to_date('2009-08-01 04:17:52');
true
> SELECT 1 <= NULL;
NULL
開始 1.0.0
<=>
expr1 <=> expr2 - null以外のオペランドについてはEQUAL(=)演算子と同じ結果を返しますが、両方がnullの場合はtrueを返し、いずれか一方がnullの場合はfalseを返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、等価比較で使用できる型である必要があります。マップ型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 <=> 2;
true
> SELECT 1 <=> '1';
true
> SELECT true <=> NULL;
false
> SELECT NULL <=> NULL;
true
開始 1.1.0
<>
expr1 != expr2 - expr1
が expr2
と等しくない場合は true を返し、それ以外の場合は false を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、等価比較で使用できる型である必要があります。マップ型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 1 != 2;
true
> SELECT 1 != '2';
true
> SELECT true != NULL;
NULL
> SELECT NULL != NULL;
NULL
開始 1.0.0
=
expr1 = expr2 - expr1
が expr2
と等しい場合は true を返し、それ以外の場合は false を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、等価比較で使用できる型である必要があります。マップ型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 = 2;
true
> SELECT 1 = '1';
true
> SELECT true = NULL;
NULL
> SELECT NULL = NULL;
NULL
開始 1.0.0
==
expr1 == expr2 - expr1
が expr2
と等しい場合は true を返し、それ以外の場合は false を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、等価比較で使用できる型である必要があります。マップ型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 == 2;
true
> SELECT 1 == '1';
true
> SELECT true == NULL;
NULL
> SELECT NULL == NULL;
NULL
開始 1.0.0
>
expr1 > expr2 - expr1
が expr2
より大きい場合は true を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、順序付け可能な型である必要があります。たとえば、マップ型は順序付けできないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 > 1;
true
> SELECT 2 > 1.1;
true
> SELECT to_date('2009-07-30 04:17:52') > to_date('2009-07-30 04:17:52');
false
> SELECT to_date('2009-07-30 04:17:52') > to_date('2009-08-01 04:17:52');
false
> SELECT 1 > NULL;
NULL
開始 1.0.0
>=
expr1 >= expr2 - expr1
が expr2
以上である場合は true を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、順序付け可能な型である必要があります。たとえば、マップ型は順序付けできないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 >= 1;
true
> SELECT 2.0 >= '2.1';
false
> SELECT to_date('2009-07-30 04:17:52') >= to_date('2009-07-30 04:17:52');
true
> SELECT to_date('2009-07-30 04:17:52') >= to_date('2009-08-01 04:17:52');
false
> SELECT 1 >= NULL;
NULL
開始 1.0.0
^
expr1 ^ expr2 - expr1
と expr2
のビット単位排他的 OR の結果を返します。
例
> SELECT 3 ^ 5;
6
開始 1.4.0
abs
abs(expr) - 数値または間隔値の絶対値を返します。
例
> SELECT abs(-1);
1
> SELECT abs(INTERVAL -'1-1' YEAR TO MONTH);
1-1
開始 1.2.0
acos
acos(expr) - java.lang.Math.acos
で計算された場合のように、expr
の逆コサイン(別名アークコサイン)を返します。
例
> SELECT acos(1);
0.0
> SELECT acos(2);
NaN
開始 1.4.0
acosh
acosh(expr) - expr
の逆双曲線コサインを返します。
例
> SELECT acosh(1);
0.0
> SELECT acosh(0);
NaN
開始 3.0.0
add_months
add_months(start_date, num_months) - start_date
から num_months
後に相当する日付を返します。
例
> SELECT add_months('2016-08-31', 1);
2016-09-30
開始 1.5.0
aes_decrypt
aes_decrypt(expr, key[, mode[, padding[, aad]]]) - mode
の AES と padding
を使用して、expr
の復号化された値を返します。16、24、および 32 ビットのキー長がサポートされています。(mode
、padding
) のサポートされている組み合わせは、('ECB'、'PKCS')、('GCM'、'NONE')、('CBC'、'PKCS') です。オプションの追加認証データ (AAD) は GCM でのみサポートされています。暗号化用に提供されている場合は、復号化用に同じ AAD 値を提供する必要があります。デフォルトのモードは GCM です。
引数
- expr - 復号化するバイナリ値。
- key - データの復号化に使用するパスフレーズ。
- mode - メッセージの復号に使用するブロック暗号モードを指定します。有効なモード:ECB、GCM、CBC。
- padding - ブロックサイズの倍数ではないメッセージをどのようにパディングするかを指定します。有効な値:PKCS、NONE、DEFAULT。DEFAULTパディングは、ECBの場合はPKCS、GCMの場合はNONE、CBCの場合はPKCSを意味します。
- aad - オプションの追加認証データ。GCMモードでのみサポートされます。これは任意の形式の入力が可能で、暗号化と復号化の両方で提供する必要があります。
例
> SELECT aes_decrypt(unhex('83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94'), '0000111122223333');
Spark
> SELECT aes_decrypt(unhex('6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'), '0000111122223333', 'GCM');
Spark SQL
> SELECT aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='), '1234567890abcdef', 'ECB', 'PKCS');
Spark SQL
> SELECT aes_decrypt(unbase64('2NYmDCjgXTbbxGA3/SnJEfFC/JQ7olk2VQWReIAAFKo='), '1234567890abcdef', 'CBC');
Apache Spark
> SELECT aes_decrypt(unbase64('AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg='), 'abcdefghijklmnop12345678ABCDEFGH', 'CBC', 'DEFAULT');
Spark
> SELECT aes_decrypt(unbase64('AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4'), 'abcdefghijklmnop12345678ABCDEFGH', 'GCM', 'DEFAULT', 'This is an AAD mixed into the input');
Spark
開始 3.3.0
aes_encrypt
aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]]) - 指定されたpadding
を使用して、指定されたmode
でAESを使用し、expr
の暗号化された値を返します。16、24、および32ビットのキー長がサポートされています。(mode
、padding
)のサポートされる組み合わせは、('ECB'、'PKCS')、('GCM'、'NONE')、および('CBC'、'PKCS')です。オプションの初期化ベクトル(IV)は、CBCおよびGCMモードでのみサポートされています。これらは、CBCの場合は16バイト、GCMの場合は12バイトでなければなりません。提供されていない場合は、ランダムなベクトルが生成され、出力の先頭に追加されます。オプションの追加認証データ(AAD)は、GCMでのみサポートされています。暗号化のために提供された場合、復号化には同一のAAD値を指定する必要があります。デフォルトのモードはGCMです。
引数
- expr - 暗号化するバイナリ値。
- key - データの暗号化に使用するパスフレーズ。
- mode - メッセージの暗号化に使用するブロック暗号モードを指定します。有効なモード:ECB、GCM、CBC。
- padding - ブロックサイズの倍数ではないメッセージをどのようにパディングするかを指定します。有効な値:PKCS、NONE、DEFAULT。DEFAULTパディングは、ECBの場合はPKCS、GCMの場合はNONE、CBCの場合はPKCSを意味します。
- iv - オプションの初期化ベクトル。CBCおよびGCMモードでのみサポートされています。有効な値:Noneまたは ''。CBCモードの場合は16バイトの配列。GCMモードの場合は12バイトの配列。
- aad - オプションの追加認証データ。GCMモードでのみサポートされます。これは任意の形式の入力が可能で、暗号化と復号化の両方で提供する必要があります。
例
> SELECT hex(aes_encrypt('Spark', '0000111122223333'));
83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94
> SELECT hex(aes_encrypt('Spark SQL', '0000111122223333', 'GCM'));
6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210
> SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'ECB', 'PKCS'));
3lmwu+Mw0H3fi5NDvcu9lg==
> SELECT base64(aes_encrypt('Apache Spark', '1234567890abcdef', 'CBC', 'DEFAULT'));
2NYmDCjgXTbbxGA3/SnJEfFC/JQ7olk2VQWReIAAFKo=
> SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop12345678ABCDEFGH', 'CBC', 'DEFAULT', unhex('00000000000000000000000000000000')));
AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg=
> SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop12345678ABCDEFGH', 'GCM', 'DEFAULT', unhex('000000000000000000000000'), 'This is an AAD mixed into the input'));
AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4
開始 3.3.0
aggregate
aggregate(expr, start, merge, finish) - 初期状態と配列内のすべての要素にバイナリ演算子を適用し、これを単一の状態に縮小します。最終状態は、finish関数を適用することで最終結果に変換されます。
例
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
60
開始 2.4.0
and
expr1 and expr2 - 論理AND。
例
> SELECT true and true;
true
> SELECT true and false;
false
> SELECT true and NULL;
NULL
> SELECT false and NULL;
false
開始 1.0.0
any
any(expr) - expr
の値の少なくとも1つがtrueの場合にtrueを返します。
例
> 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
開始 3.0.0
any_value
any_value(expr[, isIgnoreNull]) - 行のグループについて、expr
のいずれかの値を返します。isIgnoreNull
がtrueの場合、null以外の値のみを返します。
例
> SELECT any_value(col) FROM VALUES (10), (5), (20) AS tab(col);
10
> SELECT any_value(col) FROM VALUES (NULL), (5), (20) AS tab(col);
NULL
> SELECT any_value(col, true) FROM VALUES (NULL), (5), (20) AS tab(col);
5
注
この関数は非決定的です。
開始 3.4.0
approx_count_distinct
approx_count_distinct(expr[, relativeSD]) - HyperLogLog++によって推定されたカーディナリティを返します。relativeSD
は、許容される最大相対標準偏差を定義します。
例
> SELECT approx_count_distinct(col1) FROM VALUES (1), (1), (2), (2), (3) tab(col1);
3
開始 1.6.0
approx_percentile
approx_percentile(col, percentage [, accuracy]) - 数値またはansiインターバル列col
の近似percentile
を返します。これは、順序付けられたcol
の値(最小から最大にソート)の中で、col
の値のpercentage
以下がその値以下になるような最小の値です。percentageの値は0.0から1.0の間でなければなりません。accuracy
パラメータ(デフォルト:10000)は、メモリを犠牲にして近似精度を制御する正の数値リテラルです。accuracy
の値が高いほど精度が向上し、1.0/accuracy
は近似の相対誤差です。percentage
が配列の場合、percentage配列の各値は0.0から1.0の間でなければなりません。この場合、指定されたpercentage配列での列col
の近似パーセンタイル配列を返します。
例
> 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
> SELECT approx_percentile(col, 0.5, 100) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '1' MONTH), (INTERVAL '2' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-1
> SELECT approx_percentile(col, array(0.5, 0.7), 100) FROM VALUES (INTERVAL '0' SECOND), (INTERVAL '1' SECOND), (INTERVAL '2' SECOND), (INTERVAL '10' SECOND) AS tab(col);
[0 00:00:01.000000000,0 00:00:02.000000000]
開始 2.1.0
array
array(expr, ...) - 指定された要素を持つ配列を返します。
例
> SELECT array(1, 2, 3);
[1,2,3]
開始 1.1.0
array_agg
array_agg(expr) - 一意でない要素のリストを収集して返します。
例
> SELECT array_agg(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2,1]
注
収集された結果の順序はシャッフル後に非決定的になる可能性がある行の順序に依存するため、この関数は非決定的です。
開始 3.3.0
array_append
array_append(array, element) - 最初の引数として渡された配列の最後に要素を追加します。要素の型は、配列の要素の型と同様である必要があります。NULL要素も配列に追加されます。ただし、渡された配列がNULLの場合、出力はNULLになります。
例
> SELECT array_append(array('b', 'd', 'c', 'a'), 'd');
["b","d","c","a","d"]
> SELECT array_append(array(1, 2, 3, null), null);
[1,2,3,null,null]
> SELECT array_append(CAST(null as Array<Int>), 2);
NULL
開始 3.4.0
array_compact
array_compact(array) - 配列からnull値を削除します。
例
> SELECT array_compact(array(1, 2, 3, null));
[1,2,3]
> SELECT array_compact(array("a", "b", "c"));
["a","b","c"]
開始 3.4.0
array_contains
array_contains(array, value) - 配列に値が含まれている場合にtrueを返します。
例
> SELECT array_contains(array(1, 2, 3), 2);
true
開始 1.5.0
array_distinct
array_distinct(array) - 配列から重複値を削除します。
例
> SELECT array_distinct(array(1, 2, 3, null, 3));
[1,2,3,null]
開始 2.4.0
array_except
array_except(array1, array2) - 重複なしで、array1には存在するがarray2には存在しない要素の配列を返します。
例
> SELECT array_except(array(1, 2, 3), array(1, 3, 5));
[2]
開始 2.4.0
array_insert
array_insert(x, pos, val) - 配列xのインデックスposにvalを配置します。配列のインデックスは1から始まります。最大負のインデックスは-1で、この場合、関数は現在の最後の要素の後に新しい要素を挿入します。配列サイズを超えるインデックスは配列を追加し、インデックスが負の場合は配列の先頭に「null」要素を追加します。
例
> SELECT array_insert(array(1, 2, 3, 4), 5, 5);
[1,2,3,4,5]
> SELECT array_insert(array(5, 4, 3, 2), -1, 1);
[5,4,3,2,1]
> SELECT array_insert(array(5, 3, 2, 1), -4, 4);
[5,4,3,2,1]
開始 3.4.0
array_intersect
array_intersect(array1, array2) - 重複なしで、array1とarray2の積集合にある要素の配列を返します。
例
> SELECT array_intersect(array(1, 2, 3), array(1, 3, 5));
[1,3]
開始 2.4.0
array_join
array_join(array, delimiter[, nullReplacement]) - 区切り文字と、nullを置き換えるオプションの文字列を使用して、指定された配列の要素を連結します。nullReplacementの値が設定されていない場合、null値はフィルタリングされます。
例
> SELECT array_join(array('hello', 'world'), ' ');
hello world
> SELECT array_join(array('hello', null ,'world'), ' ');
hello world
> SELECT array_join(array('hello', null ,'world'), ' ', ',');
hello , world
開始 2.4.0
array_max
array_max(array) - 配列内の最大値を返します。NaNは、double/float型の場合、NaNではない要素よりも大きくなります。NULL要素はスキップされます。
例
> SELECT array_max(array(1, 20, null, 3));
20
開始 2.4.0
array_min
array_min(array) - 配列内の最小値を返します。NaNは、double/float型の場合、NaNではない要素よりも大きくなります。NULL要素はスキップされます。
例
> SELECT array_min(array(1, 20, null, 3));
1
開始 2.4.0
array_position
array_position(array, element) - 配列の最初に一致する要素の(1ベースの)インデックスをlongとして返すか、一致するものが見つからない場合は0を返します。
例
> SELECT array_position(array(312, 773, 708, 708), 708);
3
> SELECT array_position(array(312, 773, 708, 708), 414);
0
開始 2.4.0
array_prepend
array_prepend(array, element) - 最初の引数として渡された配列の先頭に要素を追加します。要素の型は、配列の要素の型と同じである必要があります。NULL要素も配列の先頭に追加されます。ただし、渡された配列がNULLの場合、出力はNULLになります。
例
> SELECT array_prepend(array('b', 'd', 'c', 'a'), 'd');
["d","b","d","c","a"]
> SELECT array_prepend(array(1, 2, 3, null), null);
[null,1,2,3,null]
> SELECT array_prepend(CAST(null as Array<Int>), 2);
NULL
開始 3.5.0
array_remove
array_remove(array, element) - 配列から要素に等しいすべての要素を削除します。
例
> SELECT array_remove(array(1, 2, 3, null, 3), 3);
[1,2,null]
開始 2.4.0
array_repeat
array_repeat(element, count) - 要素をcount回含む配列を返します。
例
> SELECT array_repeat('123', 2);
["123","123"]
開始 2.4.0
array_size
array_size(expr) - 配列のサイズを返します。この関数は、null入力に対してnullを返します。
例
> SELECT array_size(array('b', 'd', 'c', 'a'));
4
開始 3.3.0
array_sort
array_sort(expr, func) - 入力配列をソートします。funcが省略されている場合、昇順でソートします。入力配列の要素は順序付け可能である必要があります。NaNは、double/float型の場合、NaNではない要素よりも大きくなります。NULL要素は、返された配列の最後に配置されます。3.0.0以降、この関数は、指定された比較関数に基づいて配列をソートして返します。比較関数は、配列の2つの要素を表す2つの引数を受け取ります。最初の要素が2番目の要素よりも小さい、等しい、または大きい場合に、負の整数、0、または正の整数を返します。比較関数がnullを返した場合、関数は失敗してエラーを発生させます。
例
> SELECT array_sort(array(5, 6, 1), (left, right) -> case when left < right then -1 when left > right then 1 else 0 end);
[1,5,6]
> SELECT array_sort(array('bc', 'ab', 'dc'), (left, right) -> case when left is null and right is null then 0 when left is null then -1 when right is null then 1 when left < right then 1 when left > right then -1 else 0 end);
["dc","bc","ab"]
> SELECT array_sort(array('b', 'd', null, 'c', 'a'));
["a","b","c","d",null]
開始 2.4.0
array_union
array_union(array1, array2) - 重複なしで、array1とarray2の和集合にある要素の配列を返します。
例
> SELECT array_union(array(1, 2, 3), array(1, 3, 5));
[1,2,3,5]
開始 2.4.0
arrays_overlap
arrays_overlap(a1, a2) - a1にa2にも存在するnull以外の要素が少なくとも1つ含まれている場合にtrueを返します。配列に共通の要素がなく、両方が空ではなく、いずれかにnull要素が含まれている場合はnullが返され、それ以外の場合はfalseが返されます。
例
> SELECT arrays_overlap(array(1, 2, 3), array(3, 4, 5));
true
開始 2.4.0
arrays_zip
arrays_zip(a1, a2, ...) - N番目の構造体が入力配列のすべてのN番目の値を含む、構造体の結合された配列を返します。
例
> SELECT arrays_zip(array(1, 2, 3), array(2, 3, 4));
[{"0":1,"1":2},{"0":2,"1":3},{"0":3,"1":4}]
> SELECT arrays_zip(array(1, 2), array(2, 3), array(3, 4));
[{"0":1,"1":2,"2":3},{"0":2,"1":3,"2":4}]
開始 2.4.0
ascii
ascii(str) - str
の最初の文字の数値を返します。
例
> SELECT ascii('222');
50
> SELECT ascii(2);
50
開始 1.5.0
asin
asin(expr) - java.lang.Math.asin
で計算されたかのように、expr
の逆正弦(別名アークサイン)の逆正弦を返します。
例
> SELECT asin(0);
0.0
> SELECT asin(2);
NaN
開始 1.4.0
asinh
asinh(expr) - expr
の逆双曲線正弦を返します。
例
> SELECT asinh(0);
0.0
開始 3.0.0
assert_true
assert_true(expr) - expr
がtrueでない場合に例外をスローします。
例
> SELECT assert_true(0 < 1);
NULL
開始 2.0.0
atan
atan(expr) - java.lang.Math.atan
で計算されたかのように、expr
の逆正接(別名アークタンジェント)を返します。
例
> SELECT atan(0);
0.0
開始 1.4.0
atan2
atan2(exprY, exprX) - java.lang.Math.atan2
で計算されたかのように、平面の正のx軸と(exprX
、exprY
)の座標で指定された点との間のラジアン単位の角度を返します。
引数
- exprY - y軸上の座標
- exprX - x軸上の座標
例
> SELECT atan2(0, 0);
0.0
開始 1.4.0
atanh
atanh(expr) - expr
の逆双曲線正接を返します。
例
> SELECT atanh(0);
0.0
> SELECT atanh(2);
NaN
開始 3.0.0
avg
avg(expr) - グループの値から計算された平均を返します。
例
> 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
開始 1.0.0
base64
base64(bin) - 引数をバイナリbin
からbase64文字列に変換します。
例
> SELECT base64('Spark SQL');
U3BhcmsgU1FM
> SELECT base64(x'537061726b2053514c');
U3BhcmsgU1FM
開始 1.5.0
between
expr1 [NOT] BETWEEN expr2 AND expr3 - expr1
がexpr2
とexpr3
の間にあるか[ないか]を評価します。
例
> SELECT col1 FROM VALUES 1, 3, 5, 7 WHERE col1 BETWEEN 2 AND 5;
3
5
開始 1.0.0
bigint
bigint(expr) - 値expr
をターゲットデータ型bigint
にキャストします。
開始 2.0.1
bin
bin(expr) - 長い値expr
のバイナリで表現された文字列表現を返します。
例
> SELECT bin(13);
1101
> SELECT bin(-13);
1111111111111111111111111111111111111111111111111111111111110011
> SELECT bin(13.3);
1101
開始 1.5.0
binary
binary(expr) - 値expr
をターゲットデータ型binary
にキャストします。
開始 2.0.1
bit_and
bit_and(expr) - すべてのnull以外の入力値のビット単位ANDを返します。nullの場合はnullを返します。
例
> SELECT bit_and(col) FROM VALUES (3), (5) AS tab(col);
1
開始 3.0.0
bit_count
bit_count(expr) - 引数exprで設定されているビット数を、符号なし64ビット整数として返します。引数がNULLの場合はNULLを返します。
例
> SELECT bit_count(0);
0
開始 3.0.0
bit_get
bit_get(expr, pos) - 指定された位置のビットの値(0または1)を返します。位置は右から左に0から番号が付けられます。位置引数は負にすることはできません。
例
> SELECT bit_get(11, 0);
1
> SELECT bit_get(11, 2);
0
開始 3.2.0
bit_length
bit_length(expr) - 文字列データのビット長またはバイナリデータのビット数を返します。
例
> SELECT bit_length('Spark SQL');
72
> SELECT bit_length(x'537061726b2053514c');
72
開始 2.3.0
bit_or
bit_or(expr) - すべてのnull以外の入力値のビット単位ORを返します。nullの場合はnullを返します。
例
> SELECT bit_or(col) FROM VALUES (3), (5) AS tab(col);
7
開始 3.0.0
bit_xor
bit_xor(expr) - すべてのnull以外の入力値のビット単位XORを返します。nullの場合はnullを返します。
例
> SELECT bit_xor(col) FROM VALUES (3), (5) AS tab(col);
6
開始 3.0.0
bitmap_bit_position
bitmap_bit_position(child) - 指定された入力子式のビット位置を返します。
例
> SELECT bitmap_bit_position(1);
0
> SELECT bitmap_bit_position(123);
122
開始 3.5.0
bitmap_bucket_number
bitmap_bucket_number(child) - 指定された入力子式のバケット番号を返します。
例
> SELECT bitmap_bucket_number(123);
1
> SELECT bitmap_bucket_number(0);
0
開始 3.5.0
bitmap_construct_agg
bitmap_construct_agg(child) - 子式のすべての値からビットが設定された位置を持つビットマップを返します。子式はbitmap_bit_position()である可能性が最も高くなります。
例
> SELECT substring(hex(bitmap_construct_agg(bitmap_bit_position(col))), 0, 6) FROM VALUES (1), (2), (3) AS tab(col);
070000
> SELECT substring(hex(bitmap_construct_agg(bitmap_bit_position(col))), 0, 6) FROM VALUES (1), (1), (1) AS tab(col);
010000
開始 3.5.0
bitmap_count
bitmap_count(child) - 子ビットマップ内の設定されたビット数を返します。
例
> SELECT bitmap_count(X '1010');
2
> SELECT bitmap_count(X 'FFFF');
16
> SELECT bitmap_count(X '0');
0
開始 3.5.0
bitmap_or_agg
bitmap_or_agg(child) - 子式のすべてのビットマップのビット単位ORであるビットマップを返します。入力はbitmap_construct_agg()から作成されたビットマップである必要があります。
例
> SELECT substring(hex(bitmap_or_agg(col)), 0, 6) FROM VALUES (X '10'), (X '20'), (X '40') AS tab(col);
700000
> SELECT substring(hex(bitmap_or_agg(col)), 0, 6) FROM VALUES (X '10'), (X '10'), (X '10') AS tab(col);
100000
開始 3.5.0
bool_and
bool_and(expr) - expr
のすべての値がtrueの場合にtrueを返します。
例
> 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
開始 3.0.0
bool_or
bool_or(expr) - expr
の値の少なくとも1つがtrueの場合にtrueを返します。
例
> 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
開始 3.0.0
boolean
boolean(expr) - 値expr
をターゲットデータ型boolean
にキャストします。
開始 2.0.1
bround
bround(expr, d) - HALF_EVEN丸めモードを使用して、expr
を小数点以下d
桁に丸めた値を返します。
例
> SELECT bround(2.5, 0);
2
> SELECT bround(25, -1);
20
開始 2.0.0
btrim
btrim(str) - str
から先頭と末尾の空白文字を削除します。
btrim(str, trimStr) - str
から先頭と末尾のtrimStr
文字を削除します。
引数
- str - 文字列式
- trimStr - トリムするトリム文字列文字。デフォルト値は単一のスペースです。
例
> SELECT btrim(' SparkSQL ');
SparkSQL
> SELECT btrim(encode(' SparkSQL ', 'utf-8'));
SparkSQL
> SELECT btrim('SSparkSQLS', 'SL');
parkSQ
> SELECT btrim(encode('SSparkSQLS', 'utf-8'), encode('SL', 'utf-8'));
parkSQ
開始 3.2.0
cardinality
cardinality(expr) - 配列またはマップのサイズを返します。spark.sql.legacy.sizeOfNullがfalseに設定されているか、spark.sql.ansi.enabledがtrueに設定されている場合、この関数はnull入力に対してnullを返します。それ以外の場合、関数はnull入力に対して-1を返します。デフォルト設定では、この関数はnull入力に対して-1を返します。
例
> SELECT cardinality(array('b', 'd', 'c', 'a'));
4
> SELECT cardinality(map('a', 1, 'b', 2));
2
開始 1.5.0
case
CASE expr1 WHEN expr2 THEN expr3 [WHEN expr4 THEN expr5]* [ELSE expr6] END - expr1
= expr2
の場合、expr3
を返します。expr1
= expr4
の場合、expr5
を返します。それ以外の場合はexpr6
を返します。
引数
- expr1 - 比較のオペランドの1つである式。
- expr2、expr4 - それぞれが比較のもう一方のオペランドである式。
- expr3、expr5、expr6 - 分岐値式とelse値式はすべて同じ型であるか、共通の型に強制変換可能である必要があります。
例
> SELECT CASE col1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE '?' END FROM VALUES 1, 2, 3;
one
two
?
> SELECT CASE col1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' END FROM VALUES 1, 2, 3;
one
two
NULL
開始 1.0.1
cast
cast(expr AS type) - 値expr
をターゲットデータ型type
にキャストします。
例
> SELECT cast('10' as int);
10
開始 1.0.0
cbrt
cbrt(expr) - expr
の立方根を返します。
例
> SELECT cbrt(27.0);
3.0
開始 1.4.0
ceil
ceil(expr[, scale]) - expr
以上となるように切り上げた最小の数値を返します。オプションのscale
パラメータを指定して、丸め動作を制御できます。
例
> SELECT ceil(-0.1);
0
> SELECT ceil(5);
5
> SELECT ceil(3.1411, 3);
3.142
> SELECT ceil(3.1411, -3);
1000
開始 3.3.0
ceiling
ceiling(expr[, scale]) - expr
以上の最小の数値を、切り上げて返します。オプションの scale
パラメータを指定して、丸め動作を制御できます。
例
> SELECT ceiling(-0.1);
0
> SELECT ceiling(5);
5
> SELECT ceiling(3.1411, 3);
3.142
> SELECT ceiling(3.1411, -3);
1000
開始 3.3.0
char
char(expr) - expr
とバイナリ的に同等の ASCII 文字を返します。n が 256 より大きい場合、結果は chr(n % 256) と同等です。
例
> SELECT char(65);
A
開始 2.3.0
char_length
char_length(expr) - 文字列データの文字長、またはバイナリデータのバイト数を返します。文字列データの長さには、末尾のスペースが含まれます。バイナリデータの長さには、バイナリゼロが含まれます。
例
> SELECT char_length('Spark SQL ');
10
> SELECT char_length(x'537061726b2053514c');
9
> SELECT CHAR_LENGTH('Spark SQL ');
10
> SELECT CHARACTER_LENGTH('Spark SQL ');
10
開始 1.5.0
character_length
character_length(expr) - 文字列データの文字長、またはバイナリデータのバイト数を返します。文字列データの長さには、末尾のスペースが含まれます。バイナリデータの長さには、バイナリゼロが含まれます。
例
> SELECT character_length('Spark SQL ');
10
> SELECT character_length(x'537061726b2053514c');
9
> SELECT CHAR_LENGTH('Spark SQL ');
10
> SELECT CHARACTER_LENGTH('Spark SQL ');
10
開始 1.5.0
chr
chr(expr) - expr
とバイナリ的に同等の ASCII 文字を返します。n が 256 より大きい場合、結果は chr(n % 256) と同等です。
例
> SELECT chr(65);
A
開始 2.3.0
coalesce
coalesce(expr1, expr2, ...) - 最初の非 NULL 引数が存在する場合はそれを返します。それ以外の場合は、NULL を返します。
例
> SELECT coalesce(NULL, 1, NULL);
1
開始 1.0.0
collect_list
collect_list(expr) - 一意でない要素のリストを収集して返します。
例
> SELECT collect_list(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2,1]
注
収集された結果の順序はシャッフル後に非決定的になる可能性がある行の順序に依存するため、この関数は非決定的です。
開始 2.0.0
collect_set
collect_set(expr) - 一意な要素のセットを収集して返します。
例
> SELECT collect_set(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2]
注
収集された結果の順序はシャッフル後に非決定的になる可能性がある行の順序に依存するため、この関数は非決定的です。
開始 2.0.0
concat
concat(col1, col2, ..., colN) - col1, col2, ..., colN の連結を返します。
例
> SELECT concat('Spark', 'SQL');
SparkSQL
> SELECT concat(array(1, 2, 3), array(4, 5), array(6));
[1,2,3,4,5,6]
注
配列の連結ロジックは 2.4.0 以降で利用可能です。
開始 1.5.0
concat_ws
concat_ws(sep[, str | array(str)]+) - sep
で区切られた文字列の連結を返します。NULL 値はスキップされます。
例
> SELECT concat_ws(' ', 'Spark', 'SQL');
Spark SQL
> SELECT concat_ws('s');
> SELECT concat_ws('/', 'foo', null, 'bar');
foo/bar
> SELECT concat_ws(null, 'Spark', 'SQL');
NULL
開始 1.5.0
contains
contains(left, right) - ブール値を返します。right が left 内に見つかった場合は True です。いずれかの入力式が NULL の場合は NULL を返します。それ以外の場合は False を返します。left または right は、STRING または BINARY 型である必要があります。
例
> SELECT contains('Spark SQL', 'Spark');
true
> SELECT contains('Spark SQL', 'SPARK');
false
> SELECT contains('Spark SQL', null);
NULL
> SELECT contains(x'537061726b2053514c', x'537061726b');
true
開始 3.3.0
conv
conv(num, from_base, to_base) - num
を from_base
から to_base
に変換します。
例
> SELECT conv('100', 2, 10);
4
> SELECT conv(-10, 16, -10);
-16
開始 1.5.0
convert_timezone
convert_timezone([sourceTz, ]targetTz, sourceTs) - タイムゾーンなしのタイムスタンプ sourceTs
を、sourceTz
タイムゾーンから targetTz
に変換します。
引数
- sourceTz - 入力タイムスタンプのタイムゾーン。省略した場合、現在のセッションタイムゾーンがソースタイムゾーンとして使用されます。
- targetTz - 入力タイムスタンプの変換先のタイムゾーン
- sourceTs - タイムゾーンなしのタイムスタンプ
例
> SELECT convert_timezone('Europe/Brussels', 'America/Los_Angeles', timestamp_ntz'2021-12-06 00:00:00');
2021-12-05 15:00:00
> SELECT convert_timezone('Europe/Brussels', timestamp_ntz'2021-12-05 15:00:00');
2021-12-06 00:00:00
開始 3.4.0
corr
corr(expr1, expr2) - 数値ペアのセット間のピアソン相関係数を返します。
例
> SELECT corr(c1, c2) FROM VALUES (3, 2), (3, 3), (6, 4) as tab(c1, c2);
0.8660254037844387
開始 1.6.0
cos
cos(expr) - java.lang.Math.cos
で計算されたかのように、expr
のコサインを返します。
引数
- expr - ラジアン単位の角度
例
> SELECT cos(0);
1.0
開始 1.4.0
cosh
cosh(expr) - java.lang.Math.cosh
で計算されたかのように、expr
の双曲線コサインを返します。
引数
- expr - 双曲線角
例
> SELECT cosh(0);
1.0
開始 1.4.0
cot
cot(expr) - 1/java.lang.Math.tan
で計算されたかのように、expr
のコタンジェントを返します。
引数
- expr - ラジアン単位の角度
例
> SELECT cot(1);
0.6420926159343306
開始 2.3.0
count
count(*) - NULL を含む、取得された行の合計数を返します。
count(expr[, expr...]) - 指定された式がすべて非 NULL である行数を返します。
count(DISTINCT expr[, expr...]) - 指定された式が一意で非 NULL である行数を返します。
例
> 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
開始 1.0.0
count_if
count_if(expr) - 式の TRUE
値の数を返します。
例
> 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
開始 3.0.0
count_min_sketch
count_min_sketch(col, eps, confidence, seed) - 指定された esp、信頼度、およびシードを持つ列のカウント最小スケッチを返します。結果はバイト配列であり、使用前に CountMinSketch
に逆シリアル化できます。カウント最小スケッチは、準線形空間を使用してカーディナリティ推定に使用される確率的データ構造です。
例
> SELECT hex(count_min_sketch(col, 0.5d, 0.5d, 1)) FROM VALUES (1), (2), (1) AS tab(col);
0000000100000000000000030000000100000004000000005D8D6AB90000000000000000000000000000000200000000000000010000000000000000
開始 2.2.0
covar_pop
covar_pop(expr1, expr2) - 数値ペアのセットの母共分散を返します。
例
> SELECT covar_pop(c1, c2) FROM VALUES (1,1), (2,2), (3,3) AS tab(c1, c2);
0.6666666666666666
開始 2.0.0
covar_samp
covar_samp(expr1, expr2) - 数値ペアのセットの標本共分散を返します。
例
> SELECT covar_samp(c1, c2) FROM VALUES (1,1), (2,2), (3,3) AS tab(c1, c2);
1.0
開始 2.0.0
crc32
crc32(expr) - expr
の巡回冗長検査値を bigint として返します。
例
> SELECT crc32('Spark');
1557323817
開始 1.5.0
csc
csc(expr) - 1/java.lang.Math.sin
で計算されたかのように、expr
のコセカントを返します。
引数
- expr - ラジアン単位の角度
例
> SELECT csc(1);
1.1883951057781212
開始 3.3.0
cume_dist
cume_dist() - パーティション内のすべての値に対する値の位置を計算します。
例
> SELECT a, b, cume_dist() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 0.6666666666666666
A1 1 0.6666666666666666
A1 2 1.0
A2 3 1.0
開始 2.0.0
curdate
curdate() - クエリ評価の開始時の現在の日付を返します。同じクエリ内の curdate のすべての呼び出しは、同じ値を返します。
例
> SELECT curdate();
2022-09-06
開始 3.4.0
current_catalog
current_catalog() - 現在のカタログを返します。
例
> SELECT current_catalog();
spark_catalog
開始 3.1.0
current_database
current_database() - 現在のデータベースを返します。
例
> SELECT current_database();
default
開始 1.6.0
current_date
current_date() - クエリ評価の開始時の現在の日付を返します。同じクエリ内の current_date のすべての呼び出しは、同じ値を返します。
current_date - クエリ評価の開始時の現在の日付を返します。
例
> SELECT current_date();
2020-04-25
> SELECT current_date;
2020-04-25
注
括弧なしの構文は 2.0.1 以降でサポートされています。
開始 1.5.0
current_schema
current_schema() - 現在のデータベースを返します。
例
> SELECT current_schema();
default
開始 1.6.0
current_timestamp
current_timestamp() - クエリ評価の開始時の現在のタイムスタンプを返します。同じクエリ内の current_timestamp のすべての呼び出しは、同じ値を返します。
current_timestamp - クエリ評価の開始時の現在のタイムスタンプを返します。
例
> SELECT current_timestamp();
2020-04-25 15:49:11.914
> SELECT current_timestamp;
2020-04-25 15:49:11.914
注
括弧なしの構文は 2.0.1 以降でサポートされています。
開始 1.5.0
current_timezone
current_timezone() - 現在のセッションのローカルタイムゾーンを返します。
例
> SELECT current_timezone();
Asia/Shanghai
開始 3.1.0
current_user
current_user() - 現在の実行コンテキストのユーザー名。
例
> SELECT current_user();
mockingjay
開始 3.2.0
date
date(expr) - 値 expr
をターゲットデータ型 date
にキャストします。
開始 2.0.1
date_add
date_add(start_date, num_days) - start_date
の num_days
後である日付を返します。
例
> SELECT date_add('2016-07-30', 1);
2016-07-31
開始 1.5.0
date_diff
date_diff(endDate, startDate) - startDate
から endDate
までの日数を返します。
例
> SELECT date_diff('2009-07-31', '2009-07-30');
1
> SELECT date_diff('2009-07-30', '2009-07-31');
-1
開始 3.4.0
date_format
date_format(timestamp, fmt) - timestamp
を、日付形式 fmt
で指定された形式の文字列の値に変換します。
引数
- timestamp - 指定された形式に変換される日付/タイムスタンプまたは文字列。
- fmt - 従う日付/時刻形式パターン。有効な日付と時刻の形式パターンについては、Datetime Patterns を参照してください。
例
> SELECT date_format('2016-04-08', 'y');
2016
開始 1.5.0
date_from_unix_date
date_from_unix_date(days) - 1970-01-01 からの日数から日付を作成します。
例
> SELECT date_from_unix_date(1);
1970-01-02
開始 3.1.0
date_part
date_part(field, source) - 日付/タイムスタンプまたは間隔のソースの一部を抽出します。
引数
- field - 抽出するソースのどの部分を選択します。サポートされている文字列値は、同等の関数
EXTRACT
のフィールドと同じです。 - source -
field
を抽出する日付/タイムスタンプまたは間隔の列
例
> SELECT date_part('YEAR', TIMESTAMP '2019-08-12 01:00:00.123456');
2019
> SELECT date_part('week', timestamp'2019-08-12 01:00:00.123456');
33
> SELECT date_part('doy', DATE'2019-08-12');
224
> SELECT date_part('SECONDS', timestamp'2019-10-01 00:00:01.000001');
1.000001
> SELECT date_part('days', interval 5 days 3 hours 7 minutes);
5
> SELECT date_part('seconds', interval 5 hours 30 seconds 1 milliseconds 1 microseconds);
30.001001
> SELECT date_part('MONTH', INTERVAL '2021-11' YEAR TO MONTH);
11
> SELECT date_part('MINUTE', INTERVAL '123 23:55:59.002001' DAY TO SECOND);
55
注
date_part 関数は、SQL 標準関数 EXTRACT(field FROM source)
と同等です。
開始 3.0.0
date_sub
date_sub(start_date, num_days) - start_date
の num_days
前である日付を返します。
例
> SELECT date_sub('2016-07-30', 1);
2016-07-29
開始 1.5.0
date_trunc
date_trunc(fmt, ts) - タイムスタンプ ts
を、形式モデル fmt
で指定された単位に切り捨てて返します。
引数
- fmt - 切り捨てられる単位を表す形式
- "YEAR"、"YYYY"、"YY" -
ts
が該当する年の最初の日付に切り捨てます。時間部分はゼロになります - "QUARTER" -
ts
が該当する四半期の最初の日付に切り捨てます。時間部分はゼロになります - "MONTH"、"MM"、"MON" -
ts
が該当する月の最初の日付に切り捨てます。時間部分はゼロになります - "WEEK" -
ts
が該当する週の月曜日に切り捨てます。時間部分はゼロになります - "DAY"、"DD" - 時間部分をゼロにします
- "HOUR" - 分と秒(分数部分を含む)をゼロにします
- "MINUTE" - 秒(分数部分を含む)をゼロにします
- "SECOND" - 秒の分数部分をゼロにします
- "MILLISECOND" - マイクロ秒をゼロにします
- "MICROSECOND" - すべてが残ります
- "YEAR"、"YYYY"、"YY" -
- ts - datetime 値または有効なタイムスタンプ文字列
例
> SELECT date_trunc('YEAR', '2015-03-05T09:32:05.359');
2015-01-01 00:00:00
> SELECT date_trunc('MM', '2015-03-05T09:32:05.359');
2015-03-01 00:00:00
> SELECT date_trunc('DD', '2015-03-05T09:32:05.359');
2015-03-05 00:00:00
> SELECT date_trunc('HOUR', '2015-03-05T09:32:05.359');
2015-03-05 09:00:00
> SELECT date_trunc('MILLISECOND', '2015-03-05T09:32:05.123456');
2015-03-05 09:32:05.123
開始 2.3.0
dateadd
dateadd(start_date, num_days) - start_date
の num_days
後である日付を返します。
例
> SELECT dateadd('2016-07-30', 1);
2016-07-31
開始 3.4.0
datediff
datediff(endDate, startDate) - startDate
から endDate
までの日数を返します。
例
> SELECT datediff('2009-07-31', '2009-07-30');
1
> SELECT datediff('2009-07-30', '2009-07-31');
-1
開始 1.5.0
datepart
datepart(field, source) - 日付/タイムスタンプまたは間隔のソースの一部を抽出します。
引数
- field - 抽出するソースのどの部分を選択します。サポートされている文字列値は、同等の関数
EXTRACT
のフィールドと同じです。 - source -
field
を抽出する日付/タイムスタンプまたは間隔の列
例
> SELECT datepart('YEAR', TIMESTAMP '2019-08-12 01:00:00.123456');
2019
> SELECT datepart('week', timestamp'2019-08-12 01:00:00.123456');
33
> SELECT datepart('doy', DATE'2019-08-12');
224
> SELECT datepart('SECONDS', timestamp'2019-10-01 00:00:01.000001');
1.000001
> SELECT datepart('days', interval 5 days 3 hours 7 minutes);
5
> SELECT datepart('seconds', interval 5 hours 30 seconds 1 milliseconds 1 microseconds);
30.001001
> SELECT datepart('MONTH', INTERVAL '2021-11' YEAR TO MONTH);
11
> SELECT datepart('MINUTE', INTERVAL '123 23:55:59.002001' DAY TO SECOND);
55
注
datepart 関数は、SQL 標準関数 EXTRACT(field FROM source)
と同等です。
開始 3.4.0
day
day(date) - 日付/タイムスタンプの月の日を返します。
例
> SELECT day('2009-07-30');
30
開始 1.5.0
dayofmonth
dayofmonth(date) - 日付/タイムスタンプの月の日を返します。
例
> SELECT dayofmonth('2009-07-30');
30
開始 1.5.0
dayofweek
dayofweek(date) - 日付/タイムスタンプの曜日を返します(1 = 日曜日、2 = 月曜日、...、7 = 土曜日)。
例
> SELECT dayofweek('2009-07-30');
5
開始 2.3.0
dayofyear
dayofyear(date) - 日付/タイムスタンプの年の日を返します。
例
> SELECT dayofyear('2016-04-09');
100
開始 1.5.0
decimal
decimal(expr) - 値 expr
をターゲットデータ型 decimal
にキャストします。
開始 2.0.1
decode
decode(bin, charset) - 2 番目の引数の文字セットを使用して、最初の引数をデコードします。
decode(expr, search, result [, search, result ] ... [, default]) - expr を各検索値と順番に比較します。expr が検索値と等しい場合、decode は対応する結果を返します。一致するものが見つからない場合は、default を返します。default が省略された場合は、null を返します。
例
> SELECT decode(encode('abc', 'utf-8'), 'utf-8');
abc
> SELECT decode(2, 1, 'Southlake', 2, 'San Francisco', 3, 'New Jersey', 4, 'Seattle', 'Non domestic');
San Francisco
> SELECT decode(6, 1, 'Southlake', 2, 'San Francisco', 3, 'New Jersey', 4, 'Seattle', 'Non domestic');
Non domestic
> SELECT decode(6, 1, 'Southlake', 2, 'San Francisco', 3, 'New Jersey', 4, 'Seattle');
NULL
> SELECT decode(null, 6, 'Spark', NULL, 'SQL', 4, 'rocks');
SQL
開始 3.2.0
degrees
degrees(expr) - ラジアンを度数に変換します。
引数
- expr - ラジアン単位の角度
例
> SELECT degrees(3.141592653589793);
180.0
開始 1.4.0
dense_rank
dense_rank() - 値のグループ内の値の順位を計算します。結果は、以前に割り当てられたランク値に 1 を加えたものです。関数 rank とは異なり、dense_rank はランキングシーケンスにギャップを生成しません。
引数
- children - これは順位の基準となるものです。子の一つの値の変化は、順位の変化を引き起こします。これは内部パラメータであり、アナライザーによって割り当てられます。
例
> SELECT a, b, dense_rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 1
A1 2 2
A2 3 1
開始 2.0.0
div
expr1 div expr2 - expr1
を expr2
で割ります。オペランドが NULL の場合、または expr2
が 0 の場合は NULL を返します。結果は long にキャストされます。
例
> SELECT 3 div 2;
1
> SELECT INTERVAL '1-1' YEAR TO MONTH div INTERVAL '-1' MONTH;
-13
開始 3.0.0
double
double(expr) - 値 expr
をターゲットデータ型 double
にキャストします。
開始 2.0.1
e
e() - オイラー数 e を返します。
例
> SELECT e();
2.718281828459045
開始 1.5.0
element_at
element_at(array, index) - 指定された(1 ベースの)インデックスにある配列の要素を返します。インデックスが 0 の場合、Spark はエラーをスローします。インデックスが < 0 の場合は、最後から最初の要素にアクセスします。インデックスが配列の長さを超えており、spark.sql.ansi.enabled
が false に設定されている場合、関数は NULL を返します。spark.sql.ansi.enabled
が true に設定されている場合は、無効なインデックスに対して ArrayIndexOutOfBoundsException がスローされます。
element_at(map, key) - 指定されたキーの値を返します。キーがマップに含まれていない場合、関数は NULL を返します。
例
> SELECT element_at(array(1, 2, 3), 2);
2
> SELECT element_at(map(1, 'a', 2, 'b'), 2);
b
開始 2.4.0
elt
elt(n, input1, input2, ...) - n
番目の入力を返します。たとえば、n
が 2 の場合は input2
を返します。インデックスが配列の長さを超えており、spark.sql.ansi.enabled
が false に設定されている場合、関数は NULL を返します。spark.sql.ansi.enabled
が true に設定されている場合は、無効なインデックスに対して ArrayIndexOutOfBoundsException がスローされます。
例
> SELECT elt(1, 'scala', 'java');
scala
> SELECT elt(2, 'a', 1);
1
開始 2.0.0
encode
encode(str, charset) - 2 番目の引数の文字セットを使用して、最初の引数をエンコードします。
例
> SELECT encode('abc', 'utf-8');
abc
開始 1.5.0
endswith
endswith(left, right) - ブール値を返します。left が right で終わる場合は True です。いずれかの入力式が NULL の場合は NULL を返します。それ以外の場合は False を返します。left または right は、STRING または BINARY 型である必要があります。
例
> SELECT endswith('Spark SQL', 'SQL');
true
> SELECT endswith('Spark SQL', 'Spark');
false
> SELECT endswith('Spark SQL', null);
NULL
> SELECT endswith(x'537061726b2053514c', x'537061726b');
false
> SELECT endswith(x'537061726b2053514c', x'53514c');
true
開始 3.3.0
equal_null
equal_null(expr1, expr2) - 非 NULL オペランドの場合は EQUAL(=) 演算子と同じ結果を返しますが、両方が null の場合は true、いずれかが null の場合は false を返します。
引数
- expr1, expr2 - 2つの式は同じ型であるか、共通の型にキャストできる必要があり、等価比較で使用できる型である必要があります。マップ型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT equal_null(3, 3);
true
> SELECT equal_null(1, '11');
false
> SELECT equal_null(true, NULL);
false
> SELECT equal_null(NULL, 'abc');
false
> SELECT equal_null(NULL, NULL);
true
開始 3.4.0
every
every(expr) - expr
のすべての値が true の場合は true を返します。
例
> 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
開始 3.0.0
exists
exists(expr, pred) - 配列内の 1 つ以上の要素に対して述語が保持されるかどうかをテストします。
例
> SELECT exists(array(1, 2, 3), x -> x % 2 == 0);
true
> SELECT exists(array(1, 2, 3), x -> x % 2 == 10);
false
> SELECT exists(array(1, null, 3), x -> x % 2 == 0);
NULL
> SELECT exists(array(0, null, 2, 3, null), x -> x IS NULL);
true
> SELECT exists(array(1, 2, 3), x -> x IS NULL);
false
開始 2.4.0
exp
exp(expr) - expr
のべき乗に対する e を返します。
例
> SELECT exp(0);
1.0
開始 1.4.0
explode
explode(expr) - 配列 expr
の要素を複数の行に、またはマップ expr
の要素を複数の行と列に分離します。特に指定がない限り、配列の要素にはデフォルトの列名 col
、マップの要素には key
および value
を使用します。
例
> SELECT explode(array(10, 20));
10
20
> SELECT explode(collection => array(10, 20));
10
20
> SELECT * FROM explode(collection => array(10, 20));
10
20
開始 1.0.0
explode_outer
explode_outer(expr) - 配列 expr
の要素を複数の行に、またはマップ expr
の要素を複数の行と列に分離します。特に指定がない限り、配列の要素にはデフォルトの列名 col
、マップの要素には key
および value
を使用します。
例
> SELECT explode_outer(array(10, 20));
10
20
> SELECT explode_outer(collection => array(10, 20));
10
20
> SELECT * FROM explode_outer(collection => array(10, 20));
10
20
開始 1.0.0
expm1
expm1(expr) - exp(expr
) - 1 を返します。
例
> SELECT expm1(0);
0.0
開始 1.4.0
extract
extract(field FROM source) - 日付/タイムスタンプまたは間隔のソースの一部を抽出します。
引数
- field - 抽出するソースのどの部分を選択します。
- 日付とタイムスタンプの
field
でサポートされている文字列値(大文字と小文字は区別されません)は次のとおりです。- "YEAR"、("Y", "YEARS", "YR", "YRS") - 年のフィールド
- "YEAROFWEEK" - 日付が該当する ISO 8601 週番号の年。たとえば、2005-01-02 は 2004 年の第 53 週の一部であるため、結果は 2004 になります。
- "QUARTER", ("QTR") - そのdatetimeが含まれる年の四半期 (1 - 4)
- "MONTH", ("MON", "MONS", "MONTHS") - 月フィールド (1 - 12)
- "WEEK", ("W", "WEEKS") - ISO 8601 週番号に基づく年の週番号。週は月曜日に始まり、週1はその年の最初の4日以上を含む週です。ISO週番号システムでは、1月上旬の日付が前年の第52週または第53週の一部である可能性があり、12月下旬の日付が翌年の第1週の一部である可能性があります。たとえば、2005-01-02は2004年の第53週の一部であり、2012-12-31は2013年の第1週の一部です。
- "DAY", ("D", "DAYS") - 月の日フィールド (1 - 31)
- "DAYOFWEEK",("DOW") - datetimeの曜日を日曜(1)から土曜(7)で表します
- "DAYOFWEEK_ISO",("DOW_ISO") - datetimeの曜日をISO 8601に基づいて月曜(1)から日曜(7)で表します
- "DOY" - 年の日 (1 - 365/366)
- "HOUR", ("H", "HOURS", "HR", "HRS") - 時間フィールド (0 - 23)
- "MINUTE", ("M", "MIN", "MINS", "MINUTES") - 分フィールド (0 - 59)
- "SECOND", ("S", "SEC", "SECONDS", "SECS") - 秒フィールド (小数部分を含む)
- interval(
months
,days
,microseconds
で構成される)のfield
でサポートされる文字列値は(大文字と小文字を区別しません)- "YEAR", ("Y", "YEARS", "YR", "YRS") - 合計の
months
/ 12 - "MONTH", ("MON", "MONS", "MONTHS") - 合計の
months
% 12 - "DAY", ("D", "DAYS") - intervalの
days
部分 - "HOUR", ("H", "HOURS", "HR", "HRS") -
microseconds
に含まれる時間数 - "MINUTE", ("M", "MIN", "MINS", "MINUTES") -
microseconds
から時間を取り除いた後の残りの分数 - "SECOND", ("S", "SEC", "SECONDS", "SECS") -
microseconds
から時間と分を取り除いた後の残りの小数秒を含む秒数
- "YEAR", ("Y", "YEARS", "YR", "YRS") - 合計の
- 日付とタイムスタンプの
- source -
field
を抽出する日付/タイムスタンプまたは間隔の列
例
> SELECT extract(YEAR FROM TIMESTAMP '2019-08-12 01:00:00.123456');
2019
> SELECT extract(week FROM timestamp'2019-08-12 01:00:00.123456');
33
> SELECT extract(doy FROM DATE'2019-08-12');
224
> SELECT extract(SECONDS FROM timestamp'2019-10-01 00:00:01.000001');
1.000001
> SELECT extract(days FROM interval 5 days 3 hours 7 minutes);
5
> SELECT extract(seconds FROM interval 5 hours 30 seconds 1 milliseconds 1 microseconds);
30.001001
> SELECT extract(MONTH FROM INTERVAL '2021-11' YEAR TO MONTH);
11
> SELECT extract(MINUTE FROM INTERVAL '123 23:55:59.002001' DAY TO SECOND);
55
注
extract関数は date_part(field, source)
と同等です。
開始 3.0.0
factorial
factorial(expr) - expr
の階乗を返します。expr
は [0..20] です。それ以外の場合は、null を返します。
例
> SELECT factorial(5);
120
開始 1.5.0
filter
filter(expr, func) - 指定された述語を使用して入力配列をフィルタリングします。
例
> SELECT filter(array(1, 2, 3), x -> x % 2 == 1);
[1,3]
> SELECT filter(array(0, 2, 3), (x, i) -> x > i);
[2,3]
> SELECT filter(array(0, null, 2, 3, null), x -> x IS NOT NULL);
[0,2,3]
注
内部関数は 3.0.0 以降、インデックス引数を使用できます。
開始 2.4.0
find_in_set
find_in_set(str, str_array) - カンマ区切りのリスト (str_array
) 内の指定された文字列 (str
) のインデックス (1-based) を返します。文字列が見つからない場合、または指定された文字列 (str
) にカンマが含まれている場合は、0 を返します。
例
> SELECT find_in_set('ab','abc,b,ab,c,def');
3
開始 1.5.0
first
first(expr[, isIgnoreNull]) - 行のグループに対する expr
の最初の値を返します。isIgnoreNull
が true の場合は、null でない値のみを返します。
例
> 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
注
この関数は、シャッフルの後に非決定的な可能性がある行の順序に結果が依存するため、非決定的です。
開始 2.0.0
first_value
first_value(expr[, isIgnoreNull]) - 行のグループに対する expr
の最初の値を返します。isIgnoreNull
が true の場合は、null でない値のみを返します。
例
> 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
注
この関数は、シャッフルの後に非決定的な可能性がある行の順序に結果が依存するため、非決定的です。
開始 2.0.0
flatten
flatten(arrayOfArrays) - 配列の配列を単一の配列に変換します。
例
> SELECT flatten(array(array(1, 2), array(3, 4)));
[1,2,3,4]
開始 2.4.0
float
float(expr) - 値 expr
をターゲットのデータ型 float
にキャストします。
開始 2.0.1
floor
floor(expr[, scale]) - expr
以下の最大の数(切り捨て後)を返します。オプションの scale
パラメータを指定して、丸め動作を制御できます。
例
> SELECT floor(-0.1);
-1
> SELECT floor(5);
5
> SELECT floor(3.1411, 3);
3.141
> SELECT floor(3.1411, -3);
0
開始 3.3.0
forall
forall(expr, pred) - 配列内のすべての要素に対して述語が保持されるかどうかをテストします。
例
> SELECT forall(array(1, 2, 3), x -> x % 2 == 0);
false
> SELECT forall(array(2, 4, 8), x -> x % 2 == 0);
true
> SELECT forall(array(1, null, 3), x -> x % 2 == 0);
false
> SELECT forall(array(2, null, 8), x -> x % 2 == 0);
NULL
開始 3.0.0
format_number
format_number(expr1, expr2) - 数値 expr1
を '#,###,###.##' のようにフォーマットし、expr2
小数桁数に丸めます。expr2
が 0 の場合、結果に小数点や小数部は含まれません。expr2
はユーザー指定のフォーマットも受け入れます。これは、MySQLのFORMATのように機能することを想定しています。
例
> SELECT format_number(12332.123456, 4);
12,332.1235
> SELECT format_number(12332.123456, '##################.###');
12332.123
開始 1.5.0
format_string
format_string(strfmt, obj, ...) - printf スタイルの書式文字列からフォーマットされた文字列を返します。
例
> SELECT format_string("Hello World %d %s", 100, "days");
Hello World 100 days
開始 1.5.0
from_csv
from_csv(csvStr, schema[, options]) - 指定された csvStr
と schema
を持つ構造体値を返します。
例
> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"time":2015-08-26 00:00:00}
開始 3.0.0
from_json
from_json(jsonStr, schema[, options]) - 指定された jsonStr
と schema
を持つ構造体値を返します。
例
> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"time":2015-08-26 00:00:00}
> SELECT from_json('{"teacher": "Alice", "student": [{"name": "Bob", "rank": 1}, {"name": "Charlie", "rank": 2}]}', 'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
{"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}
開始 2.2.0
from_unixtime
from_unixtime(unix_time[, fmt]) - 指定された fmt
で unix_time
を返します。
引数
- unix_time - 指定された形式に変換される UNIX タイムスタンプ。
- fmt - 従うべき日付/時刻のフォーマットパターン。有効な日付と時刻のフォーマットパターンについては、Datetime Patterns を参照してください。省略すると、'yyyy-MM-dd HH:mm:ss' パターンが使用されます。
例
> SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');
1969-12-31 16:00:00
> SELECT from_unixtime(0);
1969-12-31 16:00:00
開始 1.5.0
from_utc_timestamp
from_utc_timestamp(timestamp, timezone) - '2017-07-14 02:40:00.0' のようなタイムスタンプが与えられた場合、それを UTC の時刻として解釈し、その時刻を指定されたタイムゾーンのタイムスタンプとしてレンダリングします。たとえば、'GMT+1' は '2017-07-14 03:40:00.0' を生成します。
例
> SELECT from_utc_timestamp('2016-08-31', 'Asia/Seoul');
2016-08-31 09:00:00
開始 1.5.0
get
get(array, index) - 指定された (0-based) インデックスにある配列の要素を返します。インデックスが配列の境界外を指している場合、この関数は NULL を返します。
例
> SELECT get(array(1, 2, 3), 0);
1
> SELECT get(array(1, 2, 3), 3);
NULL
> SELECT get(array(1, 2, 3), -1);
NULL
開始 3.4.0
get_json_object
get_json_object(json_txt, path) - path
から json オブジェクトを抽出します。
例
> SELECT get_json_object('{"a":"b"}', '$.a');
b
開始 1.5.0
getbit
getbit(expr, pos) - 指定された位置のビットの値(0または1)を返します。位置は右から左に0から始まる番号が付けられます。位置引数は負の数にできません。
例
> SELECT getbit(11, 0);
1
> SELECT getbit(11, 2);
0
開始 3.2.0
greatest
greatest(expr, ...) - すべてのパラメータの最大値を返し、null 値はスキップします。
例
> SELECT greatest(10, 9, 2, 4, 3);
10
開始 1.5.0
grouping
grouping(col) - GROUP BY で指定された列が集計されているかどうかを示します。集計されている場合は 1、結果セットで集計されていない場合は 0 を返します。",
例
> SELECT name, grouping(name), sum(age) FROM VALUES (2, 'Alice'), (5, 'Bob') people(age, name) GROUP BY cube(name);
Alice 0 2
Bob 0 5
NULL 1 7
開始 2.0.0
grouping_id
grouping_id([col1[, col2 ..]]) - グループ化のレベルを返します。(grouping(c1) << (n-1)) + (grouping(c2) << (n-2)) + ... + grouping(cn)
に等しくなります。
例
> SELECT name, grouping_id(), sum(age), avg(height) FROM VALUES (2, 'Alice', 165), (5, 'Bob', 180) people(age, name, height) GROUP BY cube(name, height);
Alice 0 2 165.0
Alice 1 2 165.0
NULL 3 7 172.5
Bob 0 5 180.0
Bob 1 5 180.0
NULL 2 2 165.0
NULL 2 5 180.0
注
入力列は、グループ化列と完全に一致するか、空(すべてのグループ化列を意味する)である必要があります。
開始 2.0.0
hash
hash(expr1, expr2, ...) - 引数のハッシュ値を返します。
例
> SELECT hash('Spark', array(123), 2);
-1321691492
開始 2.0.0
hex
hex(expr) - expr
を16進数に変換します。
例
> SELECT hex(17);
11
> SELECT hex('Spark SQL');
537061726B2053514C
開始 1.5.0
histogram_numeric
histogram_numeric(expr, nb) - nb 個のビンを使用して、数値の 'expr' のヒストグラムを計算します。戻り値は、ヒストグラムのビンの中心を表す (x,y) ペアの配列です。 'nb' の値を大きくすると、ヒストグラムの近似はより細かくなりますが、外れ値の周りにアーティファクトが生じる可能性があります。実際には、20〜40個のヒストグラムビンでうまく機能することがわかりましたが、偏ったデータセットや小さいデータセットの場合は、より多くのビンが必要になります。この関数は、不均一なビン幅のヒストグラムを作成することに注意してください。ヒストグラムの二乗平均誤差に関して保証はありませんが、実際には R/S-Plus 統計コンピューティングパッケージで生成されるヒストグラムと同等です。注意:戻り値の「x」フィールドの出力型は、集計関数で消費される入力値から伝播されます。
例
> 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}]
開始 3.3.0
hll_sketch_agg
hll_sketch_agg(expr, lgConfigK) - HllSketch の更新可能なバイナリ表現を返します。 lgConfigK
(オプション)は、K の対数底2であり、K は HllSketch のバケットまたはスロットの数です。
例
> SELECT hll_sketch_estimate(hll_sketch_agg(col, 12)) FROM VALUES (1), (1), (2), (2), (3) tab(col);
3
開始 3.5.0
hll_sketch_estimate
hll_sketch_estimate(expr) - Datasketches HllSketch のバイナリ表現が与えられた場合、推定される一意の値の数を返します。
例
> SELECT hll_sketch_estimate(hll_sketch_agg(col)) FROM VALUES (1), (1), (2), (2), (3) tab(col);
3
開始 3.5.0
hll_union
hll_union(first, second, allowDifferentLgConfigK) - Datasketches Union オブジェクトを使用して、Datasketches HllSketch オブジェクトの2つのバイナリ表現をマージします。異なる lgConfigK 値を持つスケッチの結合を許可するには、allowDifferentLgConfigK を true に設定します(デフォルトは false)。
例
> SELECT hll_sketch_estimate(hll_union(hll_sketch_agg(col1), hll_sketch_agg(col2))) FROM VALUES (1, 4), (1, 4), (2, 5), (2, 5), (3, 6) tab(col1, col2);
6
開始 3.5.0
hll_union_agg
hll_union_agg(expr, allowDifferentLgConfigK) - 推定される一意の値の数を返します。allowDifferentLgConfigK
(オプション)は、異なる lgConfigK 値を持つスケッチの結合を許可します(デフォルトは false)。
例
> SELECT hll_sketch_estimate(hll_union_agg(sketch, true)) FROM (SELECT hll_sketch_agg(col) as sketch FROM VALUES (1) tab(col) UNION ALL SELECT hll_sketch_agg(col, 20) as sketch FROM VALUES (1) tab(col));
1
開始 3.5.0
hour
hour(timestamp) - 文字列/タイムスタンプの時間コンポーネントを返します。
例
> SELECT hour('2009-07-30 12:58:59');
12
開始 1.5.0
hypot
hypot(expr1, expr2) - sqrt(expr1
2 + expr2
2) を返します。
例
> SELECT hypot(3, 4);
5.0
開始 1.4.0
if
if(expr1, expr2, expr3) - expr1
が true と評価された場合、expr2
を返します。それ以外の場合は expr3
を返します。
例
> SELECT if(1 < 2, 'a', 'b');
a
開始 1.0.0
ifnull
ifnull(expr1, expr2) - expr1
が null の場合は expr2
を返し、それ以外の場合は expr1
を返します。
例
> SELECT ifnull(NULL, array('2'));
["2"]
開始 2.0.0
ilike
str ilike pattern[ ESCAPE escape] - escape
を使用して str
が pattern
と大文字と小文字を区別せずに一致する場合は true を返し、引数のいずれかが null の場合は null を返し、それ以外の場合は false を返します。
引数
- str - 文字列式
- pattern - 文字列式。パターンは、以下の特殊記号を除き、リテラルかつ大文字と小文字を区別せずに一致する文字列です。
_ は、入力内の任意の1文字と一致します (posix 正規表現の . に似ています)
% は、入力内のゼロ文字以上と一致します (posix 正規表現の .* に似ています)
Spark 2.0 以降、文字列リテラルは SQL パーサーでエスケープ解除されます。たとえば、"\abc" に一致させるには、パターンは "\abc" である必要があります。
SQL 構成 'spark.sql.parser.escapedStringLiterals' が有効になっている場合、文字列リテラルの解析に関する Spark 1.6 の動作に戻ります。たとえば、構成が有効になっている場合、"\abc" に一致させるためのパターンは "\abc" である必要があります。 - escape - Spark 3.0 から追加された文字。デフォルトのエスケープ文字は '\' です。エスケープ文字が特殊記号または別のエスケープ文字の前にある場合、次の文字はリテラルに一致します。他の文字をエスケープすることは無効です。
例
> SELECT ilike('Spark', '_Park');
true
> SET spark.sql.parser.escapedStringLiterals=true;
spark.sql.parser.escapedStringLiterals true
> SELECT '%SystemDrive%\Users\John' ilike '\%SystemDrive\%\\users%';
true
> SET spark.sql.parser.escapedStringLiterals=false;
spark.sql.parser.escapedStringLiterals false
> SELECT '%SystemDrive%\\USERS\\John' ilike '\%SystemDrive\%\\\\Users%';
true
> SELECT '%SystemDrive%/Users/John' ilike '/%SYSTEMDrive/%//Users%' ESCAPE '/';
true
注
標準的な正規表現と一致させるには、RLIKE を使用します。
開始 3.3.0
in
expr1 in(expr2, expr3, ...) - expr
が任意の valN に等しい場合は true を返します。
引数
- expr1, expr2, expr3, ... - 引数は同じ型である必要があります。
例
> SELECT 1 in(1, 2, 3);
true
> SELECT 1 in(2, 3, 4);
false
> SELECT named_struct('a', 1, 'b', 2) in(named_struct('a', 1, 'b', 1), named_struct('a', 1, 'b', 3));
false
> SELECT named_struct('a', 1, 'b', 2) in(named_struct('a', 1, 'b', 2), named_struct('a', 1, 'b', 3));
true
開始 1.0.0
initcap
initcap(str) - 各単語の最初の文字を大文字にした str
を返します。他のすべての文字は小文字です。単語は空白で区切られます。
例
> SELECT initcap('sPark sql');
Spark Sql
開始 1.5.0
inline
inline(expr) - 構造体の配列をテーブルに展開します。特に指定のない限り、デフォルトで列名 col1、col2 などを使用します。
例
> SELECT inline(array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
開始 2.0.0
inline_outer
inline_outer(expr) - 構造体の配列をテーブルに展開します。特に指定のない限り、デフォルトで列名 col1、col2 などを使用します。
例
> SELECT inline_outer(array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
開始 2.0.0
input_file_block_length
input_file_block_length() - 読み取り中のブロックの長さを返します。利用できない場合は -1 を返します。
例
> SELECT input_file_block_length();
-1
開始 2.2.0
input_file_block_start
input_file_block_start() - 読み取り中のブロックの開始オフセットを返します。利用できない場合は -1 を返します。
例
> SELECT input_file_block_start();
-1
開始 2.2.0
input_file_name
input_file_name() - 読み取り中のファイルの名前を返します。利用できない場合は空の文字列を返します。
例
> SELECT input_file_name();
開始 1.5.0
instr
instr(str, substr) - str
内で substr
が最初に現れる (1-based) インデックスを返します。
例
> SELECT instr('SparkSQL', 'SQL');
6
開始 1.5.0
int
int(expr) - 値 expr
をターゲットのデータ型 int
にキャストします。
開始 2.0.1
isnan
isnan(expr) - expr
が NaN の場合は true を返し、それ以外の場合は false を返します。
例
> SELECT isnan(cast('NaN' as double));
true
開始 1.5.0
isnotnull
isnotnull(expr) - expr
が null でない場合は true を返し、それ以外の場合は false を返します。
例
> SELECT isnotnull(1);
true
開始 1.0.0
isnull
isnull(expr) - expr
が null の場合は true を返し、それ以外の場合は false を返します。
例
> SELECT isnull(1);
false
開始 1.0.0
java_method
java_method(class, method[, arg1[, arg2 ..]]) - リフレクションを使用してメソッドを呼び出します。
例
> SELECT java_method('java.util.UUID', 'randomUUID');
c33fb387-8500-4bfa-81d2-6e0e3e930df2
> SELECT java_method('java.util.UUID', 'fromString', 'a5cf6c42-0c85-418f-af6c-3e4e5b1328f2');
a5cf6c42-0c85-418f-af6c-3e4e5b1328f2
開始 2.0.0
json_array_length
json_array_length(jsonArray) - 最も外側の JSON 配列の要素数を返します。
引数
- jsonArray - JSON 配列。他の有効な JSON 文字列、
NULL
、または無効な JSON の場合はNULL
が返されます。
例
> SELECT json_array_length('[1,2,3,4]');
4
> SELECT json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]');
5
> SELECT json_array_length('[1,2');
NULL
開始 3.1.0
json_object_keys
json_object_keys(json_object) - 最も外側の JSON オブジェクトのすべてのキーを配列として返します。
引数
- json_object - JSON オブジェクト。有効な JSON オブジェクトが指定された場合、最も外側のオブジェクトのすべてのキーが配列として返されます。他の有効な JSON 文字列、無効な JSON 文字列、または空の文字列の場合は、関数は null を返します。
例
> SELECT json_object_keys('{}');
[]
> SELECT json_object_keys('{"key": "value"}');
["key"]
> SELECT json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}}');
["f1","f2"]
開始 3.1.0
json_tuple
json_tuple(jsonStr, p1, p2, ..., pn) - 関数 get_json_object のようなタプルを返しますが、複数の名前を受け取ります。すべての入力パラメータと出力列の型は文字列です。
例
> SELECT json_tuple('{"a":1, "b":2}', 'a', 'b');
1 2
開始 1.6.0
kurtosis
kurtosis(expr) - グループの値から計算された尖度値を返します。
例
> 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.19432323191699075
開始 1.6.0
lag
lag(input[, offset[, default]]) - ウィンドウ内の現在の行よりoffset
行前のinput
の値を返します。offset
のデフォルト値は1で、default
のデフォルト値はnullです。offset
行目のinput
の値がnullの場合、nullが返されます。そのようなオフセット行が存在しない場合(例えば、オフセットが1の場合、ウィンドウの最初の行には前の行がない)、default
が返されます。
引数
- input - 現在の行より
offset
行前の評価対象となる文字列式。 - offset - パーティション内で戻る行数を示す整数式。
- default - オフセット行が存在しない場合に使用する文字列式。
例
> SELECT a, b, lag(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 NULL
A1 1 1
A1 2 1
A2 3 NULL
開始 2.0.0
last
last(expr[, isIgnoreNull]) - 行グループにおけるexpr
の最後の値を返します。isIgnoreNull
がtrueの場合、null以外の値のみを返します。
例
> 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
注
この関数は、シャッフルの後に非決定的な可能性がある行の順序に結果が依存するため、非決定的です。
開始 2.0.0
last_day
last_day(date) - 指定された日付が属する月の最終日を返します。
例
> SELECT last_day('2009-01-12');
2009-01-31
開始 1.5.0
last_value
last_value(expr[, isIgnoreNull]) - 行グループにおけるexpr
の最後の値を返します。isIgnoreNull
がtrueの場合、null以外の値のみを返します。
例
> 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
注
この関数は、シャッフルの後に非決定的な可能性がある行の順序に結果が依存するため、非決定的です。
開始 2.0.0
lcase
lcase(str) - str
内のすべての文字を小文字に変更して返します。
例
> SELECT lcase('SparkSql');
sparksql
開始 1.0.1
lead
lead(input[, offset[, default]]) - ウィンドウ内の現在の行よりoffset
行後のinput
の値を返します。offset
のデフォルト値は1で、default
のデフォルト値はnullです。offset
行目のinput
の値がnullの場合、nullが返されます。そのようなオフセット行が存在しない場合(例えば、オフセットが1の場合、ウィンドウの最後の行には後続の行がない)、default
が返されます。
引数
- input - 現在の行より
offset
行後の評価対象となる文字列式。 - offset - パーティション内で進む行数を示す整数式。
- default - オフセットがウィンドウよりも大きい場合に使用する文字列式。デフォルト値はnullです。
例
> SELECT a, b, lead(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 2
A1 2 NULL
A2 3 NULL
開始 2.0.0
least
least(expr, ...) - null値をスキップして、すべてのパラメータの中で最小の値を返します。
例
> SELECT least(10, 9, 2, 4, 3);
2
開始 1.5.0
left
left(str, len) - 文字列str
の左端からlen
(len
は文字列型も可)文字を返します。len
が0以下の場合、結果は空の文字列になります。
例
> SELECT left('Spark SQL', 3);
Spa
> SELECT left(encode('Spark SQL', 'utf-8'), 3);
Spa
開始 2.3.0
len
len(expr) - 文字列データの文字長またはバイナリデータのバイト数を返します。文字列データの長さには末尾のスペースが含まれます。バイナリデータの長さにはバイナリのゼロが含まれます。
例
> SELECT len('Spark SQL ');
10
> SELECT len(x'537061726b2053514c');
9
> SELECT CHAR_LENGTH('Spark SQL ');
10
> SELECT CHARACTER_LENGTH('Spark SQL ');
10
開始 3.4.0
length
length(expr) - 文字列データの文字長またはバイナリデータのバイト数を返します。文字列データの長さには末尾のスペースが含まれます。バイナリデータの長さにはバイナリのゼロが含まれます。
例
> SELECT length('Spark SQL ');
10
> SELECT length(x'537061726b2053514c');
9
> SELECT CHAR_LENGTH('Spark SQL ');
10
> SELECT CHARACTER_LENGTH('Spark SQL ');
10
開始 1.5.0
levenshtein
levenshtein(str1, str2[, threshold]) - 与えられた2つの文字列間のレーベンシュタイン距離を返します。thresholdが設定されており、距離がそれよりも大きい場合は-1を返します。
例
> SELECT levenshtein('kitten', 'sitting');
3
> SELECT levenshtein('kitten', 'sitting', 2);
-1
開始 1.5.0
like
str like pattern[ ESCAPE escape] - str
がescape
を使用してpattern
に一致する場合trueを返し、引数のいずれかがnullの場合はnullを返し、それ以外の場合はfalseを返します。
引数
- str - 文字列式
- pattern - 文字列式。パターンは、以下の特殊記号を除き、文字通り一致する文字列です。
_ は入力内の任意の1文字に一致します(posix正規表現の.に類似)。% は入力内の0個以上の文字に一致します(posix正規表現の.*に類似)。
Spark 2.0 以降、文字列リテラルは SQL パーサーでエスケープ解除されます。たとえば、"\abc" に一致させるには、パターンは "\abc" である必要があります。
SQL 構成 'spark.sql.parser.escapedStringLiterals' が有効になっている場合、文字列リテラルの解析に関する Spark 1.6 の動作に戻ります。たとえば、構成が有効になっている場合、"\abc" に一致させるためのパターンは "\abc" である必要があります。 - escape - Spark 3.0 から追加された文字。デフォルトのエスケープ文字は '\' です。エスケープ文字が特殊記号または別のエスケープ文字の前にある場合、次の文字はリテラルに一致します。他の文字をエスケープすることは無効です。
例
> SELECT like('Spark', '_park');
true
> SET spark.sql.parser.escapedStringLiterals=true;
spark.sql.parser.escapedStringLiterals true
> SELECT '%SystemDrive%\Users\John' like '\%SystemDrive\%\\Users%';
true
> SET spark.sql.parser.escapedStringLiterals=false;
spark.sql.parser.escapedStringLiterals false
> SELECT '%SystemDrive%\\Users\\John' like '\%SystemDrive\%\\\\Users%';
true
> SELECT '%SystemDrive%/Users/John' like '/%SystemDrive/%//Users%' ESCAPE '/';
true
注
標準的な正規表現と一致させるには、RLIKE を使用します。
開始 1.0.0
ln
ln(expr) - expr
の自然対数(底e)を返します。
例
> SELECT ln(1);
0.0
開始 1.4.0
localtimestamp
localtimestamp() - クエリ評価開始時のタイムゾーンなしの現在のタイムスタンプを返します。同じクエリ内のlocaltimestampのすべての呼び出しは同じ値を返します。
localtimestamp - クエリ評価開始時のセッションタイムゾーンでの現在のローカル日時を返します。
例
> SELECT localtimestamp();
2020-04-25 15:49:11.914
開始 3.4.0
locate
locate(substr, str[, pos]) - str
内のpos
の位置以降で最初にsubstr
が出現する位置を返します。指定されたpos
と戻り値は1から始まるベースです。
例
> SELECT locate('bar', 'foobarbar');
4
> SELECT locate('bar', 'foobarbar', 5);
7
> SELECT POSITION('bar' IN 'foobarbar');
4
開始 1.5.0
log
log(base, expr) - base
を底とするexpr
の対数を返します。
例
> SELECT log(10, 100);
2.0
開始 1.5.0
log10
log10(expr) - 10を底とするexpr
の対数を返します。
例
> SELECT log10(10);
1.0
開始 1.4.0
log1p
log1p(expr) - log(1 + expr
)を返します。
例
> SELECT log1p(0);
0.0
開始 1.4.0
log2
log2(expr) - 2を底とするexpr
の対数を返します。
例
> SELECT log2(2);
1.0
開始 1.4.0
lower
lower(str) - str
内のすべての文字を小文字に変更して返します。
例
> SELECT lower('SparkSql');
sparksql
開始 1.0.1
lpad
lpad(str, len[, pad]) - str
を、pad
で左からlen
の長さに埋め込んで返します。str
がlen
よりも長い場合、戻り値はlen
文字またはバイトに短縮されます。pad
が指定されていない場合、str
が文字文字列の場合はスペース文字で左に埋められ、バイトシーケンスの場合はゼロで埋められます。
例
> SELECT lpad('hi', 5, '??');
???hi
> SELECT lpad('hi', 1, '??');
h
> SELECT lpad('hi', 5);
hi
> SELECT hex(lpad(unhex('aabb'), 5));
000000AABB
> SELECT hex(lpad(unhex('aabb'), 5, unhex('1122')));
112211AABB
開始 1.5.0
ltrim
ltrim(str) - str
から先頭のスペース文字を削除します。
引数
- str - 文字列式
- trimStr - トリムするトリム文字列文字。デフォルト値は単一のスペースです。
例
> SELECT ltrim(' SparkSQL ');
SparkSQL
開始 1.5.0
luhn_check
luhn_check(str ) - 数字の文字列がLuhnアルゴリズムに従って有効かどうかを確認します。このチェックサム関数は、クレジットカード番号や政府識別番号で、入力ミスや誤った番号を有効な番号と区別するために広く適用されています。
例
> SELECT luhn_check('8112189876');
true
> SELECT luhn_check('79927398713');
true
> SELECT luhn_check('79927398714');
false
開始 3.5.0
make_date
make_date(year, month, day) - 年、月、日のフィールドから日付を作成します。構成spark.sql.ansi.enabled
がfalseの場合、関数は無効な入力に対してNULLを返します。それ以外の場合は、代わりにエラーがスローされます。
引数
- year - 表す年、1から9999
- month - 表す月、1(1月)から12(12月)
- day - 表す日、1から31
例
> SELECT make_date(2013, 7, 15);
2013-07-15
> SELECT make_date(2019, 7, NULL);
NULL
開始 3.0.0
make_dt_interval
make_dt_interval([days[, hours[, mins[, secs]]]]) - 日、時、分、秒からDayTimeIntervalTypeの期間を作成します。
引数
- days - 日数、正または負
- hours - 時間数、正または負
- mins - 分数、正または負
- secs - マイクロ秒精度で小数部を持つ秒数。
例
> SELECT make_dt_interval(1, 12, 30, 01.001001);
1 12:30:01.001001000
> SELECT make_dt_interval(2);
2 00:00:00.000000000
> SELECT make_dt_interval(100, null, 3);
NULL
開始 3.2.0
make_interval
make_interval([years[, months[, weeks[, days[, hours[, mins[, secs]]]]]]]) - 年、月、週、日、時、分、秒から間隔を作成します。
引数
- years - 年数、正または負
- months - 月数、正または負
- weeks - 週数、正または負
- days - 日数、正または負
- hours - 時間数、正または負
- mins - 分数、正または負
- secs - マイクロ秒精度で小数部を持つ秒数。
例
> SELECT make_interval(100, 11, 1, 1, 12, 30, 01.001001);
100 years 11 months 8 days 12 hours 30 minutes 1.001001 seconds
> SELECT make_interval(100, null, 3);
NULL
> SELECT make_interval(0, 1, 0, 1, 0, 0, 100.000001);
1 months 1 days 1 minutes 40.000001 seconds
開始 3.0.0
make_timestamp
make_timestamp(year, month, day, hour, min, sec[, timezone]) - 年、月、日、時、分、秒、タイムゾーンのフィールドからタイムスタンプを作成します。結果のデータ型は、構成spark.sql.timestampType
の値と一致します。構成spark.sql.ansi.enabled
がfalseの場合、関数は無効な入力に対してNULLを返します。それ以外の場合は、代わりにエラーがスローされます。
引数
- year - 表す年、1から9999
- month - 表す月、1(1月)から12(12月)
- day - 表す日、1から31
- hour - 表す時、0から23
- min - 表す分、0から59
- sec - 表す秒とそのマイクロ秒部分、0から60。値は13のような整数、または13.123のような小数にすることができます。sec引数が60に等しい場合、秒フィールドは0に設定され、1分が最終的なタイムスタンプに追加されます。
- timezone - タイムゾーン識別子。例えば、CET、UTCなど。
例
> SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887, 'CET');
2014-12-27 21:30:45.887
> SELECT make_timestamp(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT make_timestamp(2019, 6, 30, 23, 59, 1);
2019-06-30 23:59:01
> SELECT make_timestamp(null, 7, 22, 15, 30, 0);
NULL
開始 3.0.0
make_timestamp_ltz
make_timestamp_ltz(year, month, day, hour, min, sec[, timezone]) - 年、月、日、時、分、秒、タイムゾーンのフィールドから、現在のタイムスタンプをローカルタイムゾーンで作成します。構成spark.sql.ansi.enabled
がfalseの場合、関数は無効な入力に対してNULLを返します。それ以外の場合は、代わりにエラーがスローされます。
引数
- year - 表す年、1から9999
- month - 表す月、1(1月)から12(12月)
- day - 表す日、1から31
- hour - 表す時、0から23
- min - 表す分、0から59
- sec - 表す秒とそのマイクロ秒部分、0から60。sec引数が60に等しい場合、秒フィールドは0に設定され、1分が最終的なタイムスタンプに追加されます。
- timezone - タイムゾーン識別子。例えば、CET、UTCなど。
例
> SELECT make_timestamp_ltz(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT make_timestamp_ltz(2014, 12, 28, 6, 30, 45.887, 'CET');
2014-12-27 21:30:45.887
> SELECT make_timestamp_ltz(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT make_timestamp_ltz(null, 7, 22, 15, 30, 0);
NULL
開始 3.4.0
make_timestamp_ntz
make_timestamp_ntz(year, month, day, hour, min, sec) - 年、月、日、時、分、秒のフィールドからローカル日時を作成します。構成spark.sql.ansi.enabled
がfalseの場合、関数は無効な入力に対してNULLを返します。それ以外の場合は、代わりにエラーがスローされます。
引数
- year - 表す年、1から9999
- month - 表す月、1(1月)から12(12月)
- day - 表す日、1から31
- hour - 表す時、0から23
- min - 表す分、0から59
- sec - 表す秒とそのマイクロ秒部分、0から60。sec引数が60に等しい場合、秒フィールドは0に設定され、1分が最終的なタイムスタンプに追加されます。
例
> SELECT make_timestamp_ntz(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT make_timestamp_ntz(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT make_timestamp_ntz(null, 7, 22, 15, 30, 0);
NULL
開始 3.4.0
make_ym_interval
make_ym_interval([years[, months]]) - 年と月から年-月間隔を作成します。
引数
- years - 年数、正または負
- months - 月数、正または負
例
> SELECT make_ym_interval(1, 2);
1-2
> SELECT make_ym_interval(1, 0);
1-0
> SELECT make_ym_interval(-1, 1);
-0-11
> SELECT make_ym_interval(2);
2-0
開始 3.2.0
map
map(key0, value0, key1, value1, ...) - 指定されたキー/値ペアでマップを作成します。
例
> SELECT map(1.0, '2', 3.0, '4');
{1.0:"2",3.0:"4"}
開始 2.0.0
map_concat
map_concat(map, ...) - 与えられたすべてのマップの結合を返します。
例
> SELECT map_concat(map(1, 'a', 2, 'b'), map(3, 'c'));
{1:"a",2:"b",3:"c"}
開始 2.4.0
map_contains_key
map_contains_key(map, key) - マップにキーが含まれている場合はtrueを返します。
例
> SELECT map_contains_key(map(1, 'a', 2, 'b'), 1);
true
> SELECT map_contains_key(map(1, 'a', 2, 'b'), 3);
false
開始 3.3.0
map_entries
map_entries(map) - 与えられたマップ内のすべてのエントリの順序なしの配列を返します。
例
> SELECT map_entries(map(1, 'a', 2, 'b'));
[{"key":1,"value":"a"},{"key":2,"value":"b"}]
開始 3.0.0
map_filter
map_filter(expr, func) - 関数を使用してマップ内のエントリをフィルタリングします。
例
> SELECT map_filter(map(1, 0, 2, 2, 3, -1), (k, v) -> k > v);
{1:0,3:-1}
開始 3.0.0
map_from_arrays
map_from_arrays(keys, values) - 指定されたキー/値配列のペアでマップを作成します。キー内のすべての要素はnullであってはなりません。
例
> SELECT map_from_arrays(array(1.0, 3.0), array('2', '4'));
{1.0:"2",3.0:"4"}
開始 2.4.0
map_from_entries
map_from_entries(arrayOfEntries) - 与えられたエントリの配列から作成されたマップを返します。
例
> SELECT map_from_entries(array(struct(1, 'a'), struct(2, 'b')));
{1:"a",2:"b"}
開始 2.4.0
map_keys
map_keys(map) - マップのキーを含む順序なしの配列を返します。
例
> SELECT map_keys(map(1, 'a', 2, 'b'));
[1,2]
開始 2.0.0
map_values
map_values(map) - マップの値を含む順序なしの配列を返します。
例
> SELECT map_values(map(1, 'a', 2, 'b'));
["a","b"]
開始 2.0.0
map_zip_with
map_zip_with(map1, map2, function) - 同じキーを持つ値のペアに関数を適用することにより、2つの指定されたマップを1つのマップにマージします。1つのマップにのみ存在するキーの場合、欠落しているキーの値としてNULLが渡されます。入力マップに重複キーが含まれている場合、重複キーの最初のエントリのみがラムダ関数に渡されます。
例
> SELECT map_zip_with(map(1, 'a', 2, 'b'), map(1, 'x', 2, 'y'), (k, v1, v2) -> concat(v1, v2));
{1:"ax",2:"by"}
> SELECT map_zip_with(map('a', 1, 'b', 2), map('b', 3, 'c', 4), (k, v1, v2) -> coalesce(v1, 0) + coalesce(v2, 0));
{"a":1,"b":5,"c":4}
開始 3.0.0
mask
mask(input[, upperChar, lowerChar, digitChar, otherChar]) - 指定された文字列値をマスクします。関数は文字を'X'または'x'に、数字を'n'に置き換えます。これは、機密情報を削除したテーブルのコピーを作成するのに役立ちます。
引数
- input - マスクする文字列値。サポートされている型:STRING、VARCHAR、CHAR
- upperChar - 大文字の文字を置き換える文字。元の文字を保持するにはNULLを指定します。デフォルト値:'X'
- lowerChar - 小文字の文字を置き換える文字。元の文字を保持するにはNULLを指定します。デフォルト値:'x'
- digitChar - 数字の文字を置き換える文字。元の文字を保持するにはNULLを指定します。デフォルト値:'n'
- otherChar - 他のすべての文字を置き換える文字。元の文字を保持するにはNULLを指定します。デフォルト値:NULL
例
> SELECT mask('abcd-EFGH-8765-4321');
xxxx-XXXX-nnnn-nnnn
> SELECT mask('abcd-EFGH-8765-4321', 'Q');
xxxx-QQQQ-nnnn-nnnn
> SELECT mask('AbCD123-@$#', 'Q', 'q');
QqQQnnn-@$#
> SELECT mask('AbCD123-@$#');
XxXXnnn-@$#
> SELECT mask('AbCD123-@$#', 'Q');
QxQQnnn-@$#
> SELECT mask('AbCD123-@$#', 'Q', 'q');
QqQQnnn-@$#
> SELECT mask('AbCD123-@$#', 'Q', 'q', 'd');
QqQQddd-@$#
> SELECT mask('AbCD123-@$#', 'Q', 'q', 'd', 'o');
QqQQdddoooo
> SELECT mask('AbCD123-@$#', NULL, 'q', 'd', 'o');
AqCDdddoooo
> SELECT mask('AbCD123-@$#', NULL, NULL, 'd', 'o');
AbCDdddoooo
> SELECT mask('AbCD123-@$#', NULL, NULL, NULL, 'o');
AbCD123oooo
> SELECT mask(NULL, NULL, NULL, NULL, 'o');
NULL
> SELECT mask(NULL);
NULL
> SELECT mask('AbCD123-@$#', NULL, NULL, NULL, NULL);
AbCD123-@$#
開始 3.4.0
max
max(expr) - expr
の最大値を返します。
例
> SELECT max(col) FROM VALUES (10), (50), (20) AS tab(col);
50
開始 1.0.0
max_by
max_by(x, y) - y
の最大値に関連付けられたx
の値を返します。
例
> SELECT max_by(x, y) FROM VALUES ('a', 10), ('b', 50), ('c', 20) AS tab(x, y);
b
開始 3.0.0
md5
md5(expr) - expr
のMD5 128ビットチェックサムを16進文字列として返します。
例
> SELECT md5('Spark');
8cde774d6f7333752ed72cacddb05126
開始 1.5.0
mean
mean(expr) - グループの値から計算された平均値を返します。
例
> 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
開始 1.0.0
median
median(col) - 数値またはANSI間隔列col
の中央値を返します。
例
> SELECT median(col) FROM VALUES (0), (10) AS tab(col);
5.0
> SELECT median(col) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-5
開始 3.4.0
min
min(expr) - expr
の最小値を返します。
例
> SELECT min(col) FROM VALUES (10), (-1), (20) AS tab(col);
-1
開始 1.0.0
min_by
min_by(x, y) - y
の最小値に関連付けられたx
の値を返します。
例
> SELECT min_by(x, y) FROM VALUES ('a', 10), ('b', 50), ('c', 20) AS tab(x, y);
a
開始 3.0.0
minute
minute(timestamp) - 文字列/タイムスタンプの分の構成要素を返します。
例
> SELECT minute('2009-07-30 12:58:59');
58
開始 1.5.0
mod
expr1 mod expr2 - expr1
/expr2
の剰余を返します。
例
> SELECT 2 % 1.8;
0.2
> SELECT MOD(2, 1.8);
0.2
開始 1.0.0
mode
mode(col) - col
内の値の中で最も頻繁に出現する値を返します。NULL値は無視されます。すべての値がNULLであるか、行数が0の場合はNULLを返します。
例
> SELECT mode(col) FROM VALUES (0), (10), (10) AS tab(col);
10
> SELECT mode(col) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '10' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-10
> SELECT mode(col) FROM VALUES (0), (10), (10), (null), (null), (null) AS tab(col);
10
開始 3.4.0
monotonically_increasing_id
monotonically_increasing_id() - 単調増加する64ビット整数を返します。生成されるIDは、単調増加であり、一意であることが保証されますが、連続しているわけではありません。現在の実装では、パーティションIDを上位31ビットに、下位33ビットを各パーティション内のレコード番号として使用します。データフレームのパーティション数が10億未満であり、各パーティションのレコード数が80億未満であることを前提としています。この関数の結果はパーティションIDに依存するため、非決定的です。
例
> SELECT monotonically_increasing_id();
0
開始 1.4.0
month
month(date) - 日付/タイムスタンプの月の構成要素を返します。
例
> SELECT month('2016-07-30');
7
開始 1.5.0
months_between
months_between(timestamp1, timestamp2[, roundOff]) - timestamp1
が timestamp2
より後の場合、結果は正になります。 timestamp1
と timestamp2
が同じ月の同じ日であるか、どちらも月末である場合、時刻は無視されます。それ以外の場合、差は1ヶ月あたり31日として計算され、roundOff=falseでない限り、8桁に丸められます。
例
> SELECT months_between('1997-02-28 10:30:00', '1996-10-30');
3.94959677
> SELECT months_between('1997-02-28 10:30:00', '1996-10-30', false);
3.9495967741935485
開始 1.5.0
named_struct
named_struct(name1, val1, name2, val2, ...) - 指定されたフィールド名と値を持つ構造体を作成します。
例
> SELECT named_struct("a", 1, "b", 2, "c", 3);
{"a":1,"b":2,"c":3}
開始 1.5.0
nanvl
nanvl(expr1, expr2) - expr1
がNaNでなければ expr1
を返し、そうでなければ expr2
を返します。
例
> SELECT nanvl(cast('NaN' as double), 123);
123.0
開始 1.5.0
negative
negative(expr) - expr
の符号を反転した値を返します。
例
> SELECT negative(1);
-1
開始 1.0.0
next_day
next_day(start_date, day_of_week) - start_date
より後で、指定された名前の曜日となる最初の日付を返します。入力パラメータの少なくとも1つがNULLの場合、関数はNULLを返します。入力パラメータの両方がNULLではなく、day_of_weekが無効な入力である場合、spark.sql.ansi.enabled
がtrueに設定されているとIllegalArgumentExceptionをスローし、それ以外の場合はNULLを返します。
例
> SELECT next_day('2015-01-14', 'TU');
2015-01-20
開始 1.5.0
not
not expr - 論理否定。
例
> SELECT not true;
false
> SELECT not false;
true
> SELECT not NULL;
NULL
開始 1.0.0
now
now() - クエリ評価の開始時の現在のタイムスタンプを返します。
例
> SELECT now();
2020-04-25 15:49:11.914
開始 1.6.0
nth_value
nth_value(input[, offset]) - ウィンドウフレームの先頭から offset
番目の行にある input
の値を返します。オフセットは1から始まります。ignoreNulls=trueの場合、offset
番目の行を見つける際にNULLをスキップします。それ以外の場合は、すべての行がoffset
にカウントされます。そのようなoffset
番目の行がない場合(例えば、オフセットが10で、ウィンドウフレームのサイズが10未満の場合)、nullが返されます。
引数
- input - 関数が操作する対象の列または式。
- offset - ウィンドウフレーム内のオフセットを示す正の整数リテラル。1から始まります。
- ignoreNulls - NthValueが使用する行の決定においてnull値をスキップする必要があることを示すオプションの指定。
例
> SELECT a, b, nth_value(b, 2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 1
A1 2 1
A2 3 NULL
開始 3.1.0
ntile
ntile(n) - 各ウィンドウパーティションの行を、1から最大で n
までの n
個のバケットに分割します。
引数
- buckets - 行を分割するバケット数を示す整数式。デフォルト値は1です。
例
> SELECT a, b, ntile(2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 1
A1 2 2
A2 3 1
開始 2.0.0
nullif
nullif(expr1, expr2) - expr1
が expr2
と等しい場合はnullを返し、それ以外の場合は expr1
を返します。
例
> SELECT nullif(2, 2);
NULL
開始 2.0.0
nvl
nvl(expr1, expr2) - expr1
がnullの場合は expr2
を返し、それ以外の場合は expr1
を返します。
例
> SELECT nvl(NULL, array('2'));
["2"]
開始 2.0.0
nvl2
nvl2(expr1, expr2, expr3) - expr1
がnullでない場合は expr2
を返し、それ以外の場合は expr3
を返します。
例
> SELECT nvl2(NULL, 2, 1);
1
開始 2.0.0
octet_length
octet_length(expr) - 文字列データのバイト長またはバイナリデータのバイト数を返します。
例
> SELECT octet_length('Spark SQL');
9
> SELECT octet_length(x'537061726b2053514c');
9
開始 2.3.0
or
expr1 or expr2 - 論理OR。
例
> SELECT true or false;
true
> SELECT false or false;
false
> SELECT true or NULL;
true
> SELECT false or NULL;
NULL
開始 1.0.0
overlay
overlay(input, replace, pos[, len]) - input
の pos
から始まり、長さが len
である部分を replace
で置き換えます。
例
> SELECT overlay('Spark SQL' PLACING '_' FROM 6);
Spark_SQL
> SELECT overlay('Spark SQL' PLACING 'CORE' FROM 7);
Spark CORE
> SELECT overlay('Spark SQL' PLACING 'ANSI ' FROM 7 FOR 0);
Spark ANSI SQL
> SELECT overlay('Spark SQL' PLACING 'tructured' FROM 2 FOR 4);
Structured SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('_', 'utf-8') FROM 6);
Spark_SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('CORE', 'utf-8') FROM 7);
Spark CORE
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('ANSI ', 'utf-8') FROM 7 FOR 0);
Spark ANSI SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('tructured', 'utf-8') FROM 2 FOR 4);
Structured SQL
開始 3.0.0
parse_url
parse_url(url, partToExtract[, key]) - URLから一部を抽出します。
例
> SELECT parse_url('https://spark.dokyumento.jp/path?query=1', 'HOST');
spark.apache.org
> SELECT parse_url('https://spark.dokyumento.jp/path?query=1', 'QUERY');
query=1
> SELECT parse_url('https://spark.dokyumento.jp/path?query=1', 'QUERY', 'query');
1
開始 2.0.0
percent_rank
percent_rank() - 値のグループにおける値のパーセンテージランクを計算します。
引数
- children - これは順位の基準となるものです。子の一つの値の変化は、順位の変化を引き起こします。これは内部パラメータであり、アナライザーによって割り当てられます。
例
> SELECT a, b, percent_rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 0.0
A1 1 0.0
A1 2 1.0
A2 3 0.0
開始 2.0.0
percentile
percentile(col, percentage [, frequency]) - 指定されたパーセンテージにおける数値またはANSIインターバル列 col
の正確なパーセンタイル値を返します。パーセンテージの値は0.0から1.0の間である必要があります。頻度の値は正の整数である必要があります。
percentile(col, array(percentage1 [, percentage2]...) [, frequency]) - 指定されたパーセンテージにおける数値列 col
の正確なパーセンタイル値の配列を返します。パーセンテージ配列の各値は0.0から1.0の間である必要があります。頻度の値は正の整数である必要があります。
例
> 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]
> SELECT percentile(col, 0.5) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-5
> SELECT percentile(col, array(0.2, 0.5)) FROM VALUES (INTERVAL '0' SECOND), (INTERVAL '10' SECOND) AS tab(col);
[0 00:00:02.000000000,0 00:00:05.000000000]
開始 2.1.0
percentile_approx
percentile_approx(col, percentage [, accuracy]) - 数値またはansiインターバル列 col
の近似 percentile
を返します。これは、順序付けられた col
値(最小から最大にソート)のうち、col
値の percentage
以下がその値以下であるような最小の値です。パーセンテージの値は0.0から1.0の間である必要があります。accuracy
パラメータ(デフォルト:10000)は、メモリを犠牲にして近似精度を制御する正の数値リテラルです。accuracy
の値が大きいほど精度が向上し、1.0/accuracy
は近似の相対誤差です。percentage
が配列の場合、パーセンテージ配列の各値は0.0から1.0の間である必要があります。この場合、指定されたパーセンテージ配列における列 col
の近似パーセンタイル配列を返します。
例
> 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
> SELECT percentile_approx(col, 0.5, 100) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '1' MONTH), (INTERVAL '2' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-1
> SELECT percentile_approx(col, array(0.5, 0.7), 100) FROM VALUES (INTERVAL '0' SECOND), (INTERVAL '1' SECOND), (INTERVAL '2' SECOND), (INTERVAL '10' SECOND) AS tab(col);
[0 00:00:01.000000000,0 00:00:02.000000000]
開始 2.1.0
pi
pi() - 円周率を返します。
例
> SELECT pi();
3.141592653589793
開始 1.5.0
pmod
pmod(expr1, expr2) - expr1
mod expr2
の正の値を返します。
例
> SELECT pmod(10, 3);
1
> SELECT pmod(-10, 3);
2
開始 1.5.0
posexplode
posexplode(expr) - 配列 expr
の要素を位置付きの複数の行に分離するか、マップ expr
の要素を位置付きの複数の行と列に分離します。特に指定がない限り、位置には列名 pos
、配列の要素には col
、マップの要素には key
と value
が使用されます。
例
> SELECT posexplode(array(10,20));
0 10
1 20
> SELECT * FROM posexplode(array(10,20));
0 10
1 20
開始 2.0.0
posexplode_outer
posexplode_outer(expr) - 配列 expr
の要素を位置付きの複数の行に分離するか、マップ expr
の要素を位置付きの複数の行と列に分離します。特に指定がない限り、位置には列名 pos
、配列の要素には col
、マップの要素には key
と value
が使用されます。
例
> SELECT posexplode_outer(array(10,20));
0 10
1 20
> SELECT * FROM posexplode_outer(array(10,20));
0 10
1 20
開始 2.0.0
position
position(substr, str[, pos]) - str
内の substr
が最初に現れる位置を、pos
の後から検索して返します。指定された pos
と戻り値は1から始まります。
例
> SELECT position('bar', 'foobarbar');
4
> SELECT position('bar', 'foobarbar', 5);
7
> SELECT POSITION('bar' IN 'foobarbar');
4
開始 1.5.0
positive
positive(expr) - expr
の値を返します。
例
> SELECT positive(1);
1
開始 1.5.0
pow
pow(expr1, expr2) - expr1
を expr2
のべき乗にします。
例
> SELECT pow(2, 3);
8.0
開始 1.4.0
power
power(expr1, expr2) - expr1
を expr2
のべき乗にします。
例
> SELECT power(2, 3);
8.0
開始 1.4.0
printf
printf(strfmt, obj, ...) - printfスタイルのフォーマット文字列からフォーマットされた文字列を返します。
例
> SELECT printf("Hello World %d %s", 100, "days");
Hello World 100 days
開始 1.5.0
quarter
quarter(date) - 日付の年の四半期を1から4の範囲で返します。
例
> SELECT quarter('2016-08-31');
3
開始 1.5.0
radians
radians(expr) - 度をラジアンに変換します。
引数
- expr - 度単位の角度
例
> SELECT radians(180);
3.141592653589793
開始 1.4.0
raise_error
raise_error(expr) - expr
を指定して例外をスローします。
例
> SELECT raise_error('custom error message');
java.lang.RuntimeException
custom error message
開始 3.1.0
rand
rand([seed]) - 独立かつ同一分布 (i.i.d.) の一様分布の[0, 1)の範囲の乱数値を返します。
例
> SELECT rand();
0.9629742951434543
> SELECT rand(0);
0.7604953758285915
> SELECT rand(null);
0.7604953758285915
注
この関数は一般的に非決定的です。
開始 1.5.0
randn
randn([seed]) - 標準正規分布から抽出された独立かつ同一分布 (i.i.d.) の乱数値を返します。
例
> SELECT randn();
-0.3254147983080288
> SELECT randn(0);
1.6034991609278433
> SELECT randn(null);
1.6034991609278433
注
この関数は一般的に非決定的です。
開始 1.5.0
random
random([seed]) - 独立かつ同一分布 (i.i.d.) の一様分布の[0, 1)の範囲の乱数値を返します。
例
> SELECT random();
0.9629742951434543
> SELECT random(0);
0.7604953758285915
> SELECT random(null);
0.7604953758285915
注
この関数は一般的に非決定的です。
開始 1.5.0
rank
rank() - 値のグループにおける値のランクを計算します。結果は、パーティションの順序において現在の行以前または現在の行と同じ行の数に1を加えたものです。値はシーケンスにギャップを生成します。
引数
- children - これは順位の基準となるものです。子の一つの値の変化は、順位の変化を引き起こします。これは内部パラメータであり、アナライザーによって割り当てられます。
例
> SELECT a, b, rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 1
A1 2 3
A2 3 1
開始 2.0.0
reduce
reduce(expr, start, merge, finish) - バイナリ演算子を初期状態と配列内のすべての要素に適用し、これを単一の状態に縮小します。最終状態は、finish関数を適用して最終結果に変換されます。
例
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x);
6
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
60
開始 3.4.0
reflect
reflect(class, method[, arg1[, arg2 ..]]) - リフレクションを使用してメソッドを呼び出します。
例
> SELECT reflect('java.util.UUID', 'randomUUID');
c33fb387-8500-4bfa-81d2-6e0e3e930df2
> SELECT reflect('java.util.UUID', 'fromString', 'a5cf6c42-0c85-418f-af6c-3e4e5b1328f2');
a5cf6c42-0c85-418f-af6c-3e4e5b1328f2
開始 2.0.0
regexp
regexp(str, regexp) - str
が regexp
に一致する場合はtrueを、それ以外の場合はfalseを返します。
引数
- str - 文字列式
-
regexp - 文字列式。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、
regexp
の正規表現は"^\abc$"になります。文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できる
regexp
は"^\abc$"になります。
例
> SET spark.sql.parser.escapedStringLiterals=true;
spark.sql.parser.escapedStringLiterals true
> SELECT regexp('%SystemDrive%\Users\John', '%SystemDrive%\\Users.*');
true
> SET spark.sql.parser.escapedStringLiterals=false;
spark.sql.parser.escapedStringLiterals false
> SELECT regexp('%SystemDrive%\\Users\\John', '%SystemDrive%\\\\Users.*');
true
注
単純な文字列パターンと一致させるには、LIKEを使用します。
開始 3.2.0
regexp_count
regexp_count(str, regexp) - 正規表現パターン regexp
が文字列 str
内で一致した回数を返します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
例
> SELECT regexp_count('Steven Jones and Stephen Smith are the best players', 'Ste(v|ph)en');
2
> SELECT regexp_count('abcdefghijklmnopqrstuvwxyz', '[a-z]{3}');
8
開始 3.4.0
regexp_extract
regexp_extract(str, regexp[, idx]) - regexp
式に一致し、正規表現グループのインデックスに対応する最初の文字列を str
から抽出します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、regexp
の正規表現は"^\abc$"になります。
文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できるregexp
は"^\abc$"になります。 - idx - グループインデックスを表す整数式。正規表現には複数のグループが含まれている場合があります。
idx
は、抽出する正規表現グループを示します。グループインデックスは非負である必要があります。idx
の最小値は0で、正規表現全体に一致することを意味します。idx
が指定されていない場合、デフォルトのグループインデックス値は1です。idx
パラメータは、Java正規表現のMatcher group()メソッドインデックスです。
例
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
開始 1.5.0
regexp_extract_all
regexp_extract_all(str, regexp[, idx]) - regexp
式に一致し、正規表現グループのインデックスに対応するすべての文字列を str
から抽出します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、regexp
の正規表現は"^\abc$"になります。
文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できるregexp
は"^\abc$"になります。 - idx - グループインデックスを表す整数式。正規表現には複数のグループが含まれている場合があります。
idx
は、抽出する正規表現グループを示します。グループインデックスは非負である必要があります。idx
の最小値は0で、正規表現全体に一致することを意味します。idx
が指定されていない場合、デフォルトのグループインデックス値は1です。idx
パラメータは、Java正規表現のMatcher group()メソッドインデックスです。
例
> SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)', 1);
["100","300"]
開始 3.1.0
regexp_instr
regexp_instr(str, regexp) - 文字列を正規表現で検索し、一致したサブストリングの開始位置を示す整数を返します。位置は0ベースではなく、1ベースです。一致するものが見つからない場合は、0を返します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、regexp
の正規表現は"^\abc$"になります。
文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できるregexp
は"^\abc$"になります。
例
> SELECT regexp_instr('user@spark.apache.org', '@[^.]*');
5
開始 3.4.0
regexp_like
regexp_like(str, regexp) - str
が regexp
に一致する場合はtrueを、それ以外の場合はfalseを返します。
引数
- str - 文字列式
-
regexp - 文字列式。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、
regexp
の正規表現は"^\abc$"になります。文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できる
regexp
は"^\abc$"になります。
例
> SET spark.sql.parser.escapedStringLiterals=true;
spark.sql.parser.escapedStringLiterals true
> SELECT regexp_like('%SystemDrive%\Users\John', '%SystemDrive%\\Users.*');
true
> SET spark.sql.parser.escapedStringLiterals=false;
spark.sql.parser.escapedStringLiterals false
> SELECT regexp_like('%SystemDrive%\\Users\\John', '%SystemDrive%\\\\Users.*');
true
注
単純な文字列パターンと一致させるには、LIKEを使用します。
開始 3.2.0
regexp_replace
regexp_replace(str, regexp, rep[, position]) - regexp
に一致する str
のすべてのサブストリングを rep
で置き換えます。
引数
- str - 正規表現パターンの一致を検索する文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、regexp
の正規表現は"^\abc$"になります。
文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できるregexp
は"^\abc$"になります。 - rep - 一致したサブストリングを置き換える文字列式。
- position - 検索を開始する
str
内の位置を示す正の整数リテラル。デフォルトは1です。positionがstr
の文字数よりも大きい場合、結果はstr
になります。
例
> SELECT regexp_replace('100-200', '(\\d+)', 'num');
num-num
開始 1.5.0
regexp_substr
regexp_substr(str, regexp) - 文字列 str
内の正規表現 regexp
に一致するサブストリングを返します。正規表現が見つからない場合、結果はnullになります。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
例
> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', 'Ste(v|ph)en');
Steven
> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', 'Jeck');
NULL
開始 3.4.0
regr_avgx
regr_avgx(y, x) - グループ内の非nullペアの独立変数の平均を返します。ここで、y
は従属変数であり、x
は独立変数です。
例
> SELECT regr_avgx(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
2.75
> SELECT regr_avgx(y, x) FROM VALUES (1, null) AS tab(y, x);
NULL
> SELECT regr_avgx(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
> SELECT regr_avgx(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
3.0
> SELECT regr_avgx(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
3.0
開始 3.3.0
regr_avgy
regr_avgy(y, x) - グループ内の非nullペアの従属変数の平均を返します。ここで、y
は従属変数であり、x
は独立変数です。
例
> SELECT regr_avgy(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
1.75
> SELECT regr_avgy(y, x) FROM VALUES (1, null) AS tab(y, x);
NULL
> SELECT regr_avgy(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
> SELECT regr_avgy(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
1.6666666666666667
> SELECT regr_avgy(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
1.5
開始 3.3.0
regr_count
regr_count(y, x) - グループ内の非nullの数値ペアの数を返します。ここで、y
は従属変数であり、x
は独立変数です。
例
> SELECT regr_count(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
4
> SELECT regr_count(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
3
> SELECT regr_count(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
2
開始 3.3.0
regr_intercept
regr_intercept(y, x) - グループ内の非nullのペアについて、単変量線形回帰直線の切片を返します。ここで、y
は従属変数、x
は独立変数です。
例
> SELECT regr_intercept(y, x) FROM VALUES (1,1), (2,2), (3,3) AS tab(y, x);
0.0
> SELECT regr_intercept(y, x) FROM VALUES (1, null) AS tab(y, x);
NULL
> SELECT regr_intercept(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
開始 3.4.0
regr_r2
regr_r2(y, x) - グループ内の非nullのペアについて、決定係数を返します。ここで、y
は従属変数、x
は独立変数です。
例
> SELECT regr_r2(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
0.2727272727272727
> SELECT regr_r2(y, x) FROM VALUES (1, null) AS tab(y, x);
NULL
> SELECT regr_r2(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
> SELECT regr_r2(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
0.7500000000000001
> SELECT regr_r2(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
1.0
開始 3.3.0
regr_slope
regr_slope(y, x) - グループ内の非nullのペアについて、線形回帰直線の傾きを返します。ここで、y
は従属変数、x
は独立変数です。
例
> SELECT regr_slope(y, x) FROM VALUES (1,1), (2,2), (3,3) AS tab(y, x);
1.0
> SELECT regr_slope(y, x) FROM VALUES (1, null) AS tab(y, x);
NULL
> SELECT regr_slope(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
開始 3.4.0
regr_sxx
regr_sxx(y, x) - グループ内の非nullのペアについて、REGR_COUNT(y, x) * VAR_POP(x)を返します。ここで、y
は従属変数、x
は独立変数です。
例
> SELECT regr_sxx(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
2.75
> SELECT regr_sxx(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
2.0
> SELECT regr_sxx(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
2.0
開始 3.4.0
regr_sxy
regr_sxy(y, x) - グループ内の非nullのペアについて、REGR_COUNT(y, x) * COVAR_POP(y, x)を返します。ここで、y
は従属変数、x
は独立変数です。
例
> SELECT regr_sxy(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
0.75
> SELECT regr_sxy(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
1.0
> SELECT regr_sxy(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
1.0
開始 3.4.0
regr_syy
regr_syy(y, x) - グループ内の非nullのペアについて、REGR_COUNT(y, x) * VAR_POP(y)を返します。ここで、y
は従属変数、x
は独立変数です。
例
> SELECT regr_syy(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);
0.75
> SELECT regr_syy(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);
0.6666666666666666
> SELECT regr_syy(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);
0.5
開始 3.4.0
repeat
repeat(str, n) - 指定された文字列値をn回繰り返す文字列を返します。
例
> SELECT repeat('123', 2);
123123
開始 1.5.0
replace
replace(str, search[, replace]) - search
のすべての出現箇所をreplace
で置き換えます。
引数
- str - 文字列式
- search - 文字列式です。
search
がstr
で見つからない場合、str
は変更されずに返されます。 - replace - 文字列式です。
replace
が指定されていないか、空の文字列である場合、str
から削除された文字列は何も置き換えられません。
例
> SELECT replace('ABCabc', 'abc', 'DEF');
ABCDEF
開始 2.3.0
reverse
reverse(array) - 反転された文字列、または要素の順序が逆になった配列を返します。
例
> SELECT reverse('Spark SQL');
LQS krapS
> SELECT reverse(array(2, 1, 4, 3));
[3,4,1,2]
注
配列の反転ロジックは2.4.0以降で利用可能です。
開始 1.5.0
right
right(str, len) - 文字列str
の右端からlen
(len
は文字列型も可)文字を返します。len
が0以下の場合、結果は空の文字列になります。
例
> SELECT right('Spark SQL', 3);
SQL
開始 2.3.0
rint
rint(expr) - 引数に最も近い値で、数学的な整数に等しいdouble値を返します。
例
> SELECT rint(12.3456);
12.0
開始 1.4.0
rlike
rlike(str, regexp) - str
がregexp
に一致する場合はtrue、そうでない場合はfalseを返します。
引数
- str - 文字列式
-
regexp - 文字列式。正規表現文字列はJavaの正規表現である必要があります。
Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープされなくなりました。たとえば、"\abc"に一致させるには、
regexp
の正規表現は"^\abc$"になります。文字列リテラルの解析に関してSpark 1.6の動作に戻すために使用できるSQL設定 'spark.sql.parser.escapedStringLiterals'があります。たとえば、この設定が有効な場合、"\abc"に一致できる
regexp
は"^\abc$"になります。
例
> SET spark.sql.parser.escapedStringLiterals=true;
spark.sql.parser.escapedStringLiterals true
> SELECT rlike('%SystemDrive%\Users\John', '%SystemDrive%\\Users.*');
true
> SET spark.sql.parser.escapedStringLiterals=false;
spark.sql.parser.escapedStringLiterals false
> SELECT rlike('%SystemDrive%\\Users\\John', '%SystemDrive%\\\\Users.*');
true
注
単純な文字列パターンと一致させるには、LIKEを使用します。
開始 1.0.0
round
round(expr, d) - expr
をd
桁の小数点以下でHALF_UP丸めモードを使用して丸めた値を返します。
例
> SELECT round(2.5, 0);
3
開始 1.5.0
row_number
row_number() - ウィンドウパーティション内の行の順序に従って、1から始まる一意の連番を各行に割り当てます。
例
> SELECT a, b, row_number() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 2
A1 2 3
A2 3 1
開始 2.0.0
rpad
rpad(str, len[, pad]) - str
をpad
で右にパディングして長さlen
にします。str
がlen
より長い場合、戻り値はlen
文字に短縮されます。pad
が指定されていない場合、str
が文字列の場合は右に空白文字で、バイナリ文字列の場合はゼロでパディングされます。
例
> SELECT rpad('hi', 5, '??');
hi???
> SELECT rpad('hi', 1, '??');
h
> SELECT rpad('hi', 5);
hi
> SELECT hex(rpad(unhex('aabb'), 5));
AABB000000
> SELECT hex(rpad(unhex('aabb'), 5, unhex('1122')));
AABB112211
開始 1.5.0
rtrim
rtrim(str) - str
から末尾の空白文字を削除します。
引数
- str - 文字列式
- trimStr - トリムするトリム文字列文字。デフォルト値は単一のスペースです。
例
> SELECT rtrim(' SparkSQL ');
SparkSQL
開始 1.5.0
schema_of_csv
schema_of_csv(csv[, options]) - CSV文字列のDDL形式のスキーマを返します。
例
> SELECT schema_of_csv('1,abc');
STRUCT<_c0: INT, _c1: STRING>
開始 3.0.0
schema_of_json
schema_of_json(json[, options]) - JSON文字列のDDL形式のスキーマを返します。
例
> SELECT schema_of_json('[{"col":0}]');
ARRAY<STRUCT<col: BIGINT>>
> SELECT schema_of_json('[{"col":01}]', map('allowNumericLeadingZeros', 'true'));
ARRAY<STRUCT<col: BIGINT>>
開始 2.4.0
sec
sec(expr) - 1/java.lang.Math.cos
で計算されたかのように、expr
の正割を返します。
引数
- expr - ラジアン単位の角度
例
> SELECT sec(0);
1.0
開始 3.3.0
second
second(timestamp) - 文字列/タイムスタンプの秒コンポーネントを返します。
例
> SELECT second('2009-07-30 12:58:59');
59
開始 1.5.0
sentences
sentences(str[, lang, country]) - str
を単語の配列の配列に分割します。
例
> SELECT sentences('Hi there! Good morning.');
[["Hi","there"],["Good","morning"]]
開始 2.0.0
sequence
sequence(start, stop, step) - 開始から停止(両端を含む)までの要素の配列を、ステップずつ増分して生成します。返される要素の型は、引数式の型と同じです。
サポートされる型は、byte、short、integer、long、date、timestampです。
開始式と停止式は同じ型に解決する必要があります。開始式と停止式が「date」または「timestamp」型に解決する場合、ステップ式は「interval」または「year-month interval」または「day-time interval」型に解決する必要があります。それ以外の場合は、開始式と停止式と同じ型に解決する必要があります。
引数
- start - 式。範囲の開始。
- stop - 式。範囲の終了(両端を含む)。
- step - オプションの式。範囲のステップ。デフォルトでは、開始が停止以下の場合はステップは1、それ以外の場合は-1です。時間シーケンスの場合、それぞれ1日と-1日です。開始が停止より大きい場合、ステップは負でなければならず、逆も同様です。
例
> SELECT sequence(1, 5);
[1,2,3,4,5]
> SELECT sequence(5, 1);
[5,4,3,2,1]
> SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval 1 month);
[2018-01-01,2018-02-01,2018-03-01]
> SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval '0-1' year to month);
[2018-01-01,2018-02-01,2018-03-01]
開始 2.4.0
session_window
session_window(time_column, gap_duration) - 指定されたタイムスタンプ列とギャップ期間からセッションウィンドウを生成します。詳細な説明と例については、構造化ストリーミングガイドドキュメントの「時間ウィンドウのタイプ」を参照してください。
引数
- time_column - 時間でウィンドウ化するためのタイムスタンプとして使用する列または式。時間列はTimestampTypeである必要があります。
- gap_duration - 固定ギャップ期間の場合は「interval value」として表されるセッションのタイムアウトを指定する文字列(詳細についてはInterval Literalを参照)、または各入力に適用され、動的なギャップ期間の「interval value」に評価される式。
例
> SELECT a, session_window.start, session_window.end, count(*) as cnt FROM VALUES ('A1', '2021-01-01 00:00:00'), ('A1', '2021-01-01 00:04:30'), ('A1', '2021-01-01 00:10:00'), ('A2', '2021-01-01 00:01:00') AS tab(a, b) GROUP by a, session_window(b, '5 minutes') ORDER BY a, start;
A1 2021-01-01 00:00:00 2021-01-01 00:09:30 2
A1 2021-01-01 00:10:00 2021-01-01 00:15:00 1
A2 2021-01-01 00:01:00 2021-01-01 00:06:00 1
> SELECT a, session_window.start, session_window.end, count(*) as cnt FROM VALUES ('A1', '2021-01-01 00:00:00'), ('A1', '2021-01-01 00:04:30'), ('A1', '2021-01-01 00:10:00'), ('A2', '2021-01-01 00:01:00'), ('A2', '2021-01-01 00:04:30') AS tab(a, b) GROUP by a, session_window(b, CASE WHEN a = 'A1' THEN '5 minutes' WHEN a = 'A2' THEN '1 minute' ELSE '10 minutes' END) ORDER BY a, start;
A1 2021-01-01 00:00:00 2021-01-01 00:09:30 2
A1 2021-01-01 00:10:00 2021-01-01 00:15:00 1
A2 2021-01-01 00:01:00 2021-01-01 00:02:00 1
A2 2021-01-01 00:04:30 2021-01-01 00:05:30 1
開始 3.2.0
sha
sha(expr) - expr
のsha1ハッシュ値を16進数文字列として返します。
例
> SELECT sha('Spark');
85f5955f4b27a9a4c2aab6ffe5d7189fc298b92c
開始 1.5.0
sha1
sha1(expr) - expr
のsha1ハッシュ値を16進数文字列として返します。
例
> SELECT sha1('Spark');
85f5955f4b27a9a4c2aab6ffe5d7189fc298b92c
開始 1.5.0
sha2
sha2(expr, bitLength) - expr
のSHA-2ファミリーのチェックサムを16進数文字列として返します。SHA-224、SHA-256、SHA-384、およびSHA-512がサポートされています。ビット長0は256に相当します。
例
> SELECT sha2('Spark', 256);
529bc3b07127ecb7e53a4dcf1991d9152c24537d919178022b2c42657f79a26b
開始 1.5.0
shiftleft
shiftleft(base, expr) - ビット単位の左シフト。
例
> SELECT shiftleft(2, 1);
4
開始 1.5.0
shiftright
shiftright(base, expr) - ビット単位の(符号付き)右シフト。
例
> SELECT shiftright(4, 1);
2
開始 1.5.0
shiftrightunsigned
shiftrightunsigned(base, expr) - ビット単位の符号なし右シフト。
例
> SELECT shiftrightunsigned(4, 1);
2
開始 1.5.0
shuffle
shuffle(array) - 指定された配列のランダムな順列を返します。
例
> SELECT shuffle(array(1, 20, 3, 5));
[3,1,5,20]
> SELECT shuffle(array(1, 20, null, 3));
[20,null,3,1]
注
この関数は非決定的です。
開始 2.4.0
sign
sign(expr) - expr
が負の場合は-1.0、0の場合は0.0、正の場合は1.0を返します。
例
> SELECT sign(40);
1.0
> SELECT sign(INTERVAL -'100' YEAR);
-1.0
開始 1.4.0
signum
signum(expr) - expr
が負の場合は-1.0、0の場合は0.0、正の場合は1.0を返します。
例
> SELECT signum(40);
1.0
> SELECT signum(INTERVAL -'100' YEAR);
-1.0
開始 1.4.0
sin
sin(expr) - java.lang.Math.sin
で計算されたかのように、expr
のサインを返します。
引数
- expr - ラジアン単位の角度
例
> SELECT sin(0);
0.0
開始 1.4.0
sinh
sinh(expr) - java.lang.Math.sinh
で計算されたかのように、expr
の双曲線サインを返します。
引数
- expr - 双曲線角
例
> SELECT sinh(0);
0.0
開始 1.4.0
size
size(expr) - 配列またはマップのサイズを返します。関数は、spark.sql.legacy.sizeOfNullがfalseに設定されているか、spark.sql.ansi.enabledがtrueに設定されている場合、null入力に対してnullを返します。それ以外の場合、関数はnull入力に対して-1を返します。デフォルト設定では、関数はnull入力に対して-1を返します。
例
> SELECT size(array('b', 'd', 'c', 'a'));
4
> SELECT size(map('a', 1, 'b', 2));
2
開始 1.5.0
skewness
skewness(expr) - グループの値から計算された歪度値を返します。
例
> 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
開始 1.6.0
slice
slice(x, start, length) - 指定された長さで、インデックスstartから始まる(配列インデックスは1から始まるか、startが負の場合は末尾から始まる)配列xのサブセット。
例
> SELECT slice(array(1, 2, 3, 4), 2, 2);
[2,3]
> SELECT slice(array(1, 2, 3, 4), -2, 2);
[3,4]
開始 2.4.0
smallint
smallint(expr) - 値expr
をターゲットデータ型smallint
にキャストします。
開始 2.0.1
some
some(expr) - expr
の値の少なくとも1つがtrueの場合にtrueを返します。
例
> 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
開始 3.0.0
sort_array
sort_array(array[, ascendingOrder]) - 配列要素の自然な順序に従って、入力配列を昇順または降順にソートします。double/float型の場合、NaNはNaN以外の要素よりも大きくなります。null要素は、昇順の場合は返された配列の先頭に、降順の場合は返された配列の末尾に配置されます。
例
> SELECT sort_array(array('b', 'd', null, 'c', 'a'), true);
[null,"a","b","c","d"]
開始 1.5.0
soundex
soundex(str) - 文字列のSoundexコードを返します。
例
> SELECT soundex('Miller');
M460
開始 1.5.0
space
space(n) - n
個のスペースで構成される文字列を返します。
例
> SELECT concat(space(2), '1');
1
開始 1.5.0
spark_partition_id
spark_partition_id() - 現在のパーティションIDを返します。
例
> SELECT spark_partition_id();
0
開始 1.4.0
split
split(str, regex, limit) - regex
に一致する出現箇所の周りでstr
を分割し、最大limit
の長さの配列を返します。
引数
- str - 分割する文字列式。
- regex - 正規表現を表す文字列。正規表現文字列はJava正規表現である必要があります。
- limit - 正規表現が適用される回数を制御する整数式。
- limit > 0:結果の配列の長さは
limit
を超えず、結果の配列の最後の要素には、最後に一致した正規表現を超えたすべての入力が含まれます。 - limit <= 0:
regex
は可能な限り多く適用され、結果の配列は任意のサイズにできます。
- limit > 0:結果の配列の長さは
例
> SELECT split('oneAtwoBthreeC', '[ABC]');
["one","two","three",""]
> SELECT split('oneAtwoBthreeC', '[ABC]', -1);
["one","two","three",""]
> SELECT split('oneAtwoBthreeC', '[ABC]', 2);
["one","twoBthreeC"]
開始 1.5.0
split_part
split_part(str, delimiter, partNum) - str
を区切り文字で分割し、分割の要求された部分(1から始まる)を返します。入力がnullの場合、nullを返します。partNum
が分割された部分の範囲外の場合、空の文字列を返します。partNum
が0の場合、エラーをスローします。partNum
が負の場合、部分は文字列の末尾から逆方向にカウントされます。delimiter
が空の文字列の場合、str
は分割されません。
例
> SELECT split_part('11.12.13', '.', 3);
13
開始 3.3.0
sqrt
sqrt(expr) - expr
の平方根を返します。
例
> SELECT sqrt(4);
2.0
開始 1.1.1
stack
stack(n, expr1, ..., exprk) - expr1
、...、exprk
をn
行に分割します。特に指定がない限り、デフォルトで列名col0、col1などが使用されます。
例
> SELECT stack(2, 1, 2, 3);
1 2
3 NULL
開始 2.0.0
startswith
startswith(left, right) - ブール値を返します。leftがrightで始まる場合、値はTrueです。入力式のいずれかがNULLの場合、NULLを返します。それ以外の場合は、Falseを返します。leftまたはrightは、STRING型またはBINARY型である必要があります。
例
> SELECT startswith('Spark SQL', 'Spark');
true
> SELECT startswith('Spark SQL', 'SQL');
false
> SELECT startswith('Spark SQL', null);
NULL
> SELECT startswith(x'537061726b2053514c', x'537061726b');
true
> SELECT startswith(x'537061726b2053514c', x'53514c');
false
開始 3.3.0
std
std(expr) - グループの値から計算されたサンプル標準偏差を返します。
例
> SELECT std(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
開始 1.6.0
stddev
stddev(expr) - グループの値から計算されたサンプル標準偏差を返します。
例
> SELECT stddev(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
開始 1.6.0
stddev_pop
stddev_pop(expr) - グループの値から計算された母集団標準偏差を返します。
例
> SELECT stddev_pop(col) FROM VALUES (1), (2), (3) AS tab(col);
0.816496580927726
開始 1.6.0
stddev_samp
stddev_samp(expr) - グループの値から計算されたサンプル標準偏差を返します。
例
> SELECT stddev_samp(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
開始 1.6.0
str_to_map
str_to_map(text[, pairDelim[, keyValueDelim]]) - 区切り文字を使用してテキストをキー/値ペアに分割した後、マップを作成します。デフォルトの区切り文字は、pairDelim
の場合は「,」、keyValueDelim
の場合は「:」です。pairDelim
とkeyValueDelim
の両方が正規表現として扱われます。
例
> SELECT str_to_map('a:1,b:2,c:3', ',', ':');
{"a":"1","b":"2","c":"3"}
> SELECT str_to_map('a');
{"a":null}
開始 2.0.1
string
string(expr) - 値expr
をターゲットデータ型string
にキャストします。
開始 2.0.1
struct
struct(col1, col2, col3, ...) - 指定されたフィールド値を持つ構造体を作成します。
例
> SELECT struct(1, 2, 3);
{"col1":1,"col2":2,"col3":3}
開始 1.4.0
substr
substr(str, pos[, len]) - str
のpos
から始まり、長さがlen
のサブストリング、またはpos
から始まり、長さがlen
のバイト配列のスライスを返します。
substr(str FROM pos[ FOR len]]) - str
のpos
から始まり、長さがlen
のサブストリング、またはpos
から始まり、長さがlen
のバイト配列のスライスを返します。
例
> SELECT substr('Spark SQL', 5);
k SQL
> SELECT substr('Spark SQL', -3);
SQL
> SELECT substr('Spark SQL', 5, 1);
k
> SELECT substr('Spark SQL' FROM 5);
k SQL
> SELECT substr('Spark SQL' FROM -3);
SQL
> SELECT substr('Spark SQL' FROM 5 FOR 1);
k
> SELECT substr(encode('Spark SQL', 'utf-8'), 5);
k SQL
開始 1.5.0
substring
substring(str, pos[, len]) - str
のpos
から始まり、長さがlen
のサブストリング、またはpos
から始まり、長さがlen
のバイト配列のスライスを返します。
substring(str FROM pos[ FOR len]]) - str
のpos
から始まり、長さがlen
のサブストリング、またはpos
から始まり、長さがlen
のバイト配列のスライスを返します。
例
> SELECT substring('Spark SQL', 5);
k SQL
> SELECT substring('Spark SQL', -3);
SQL
> SELECT substring('Spark SQL', 5, 1);
k
> SELECT substring('Spark SQL' FROM 5);
k SQL
> SELECT substring('Spark SQL' FROM -3);
SQL
> SELECT substring('Spark SQL' FROM 5 FOR 1);
k
> SELECT substring(encode('Spark SQL', 'utf-8'), 5);
k SQL
開始 1.5.0
substring_index
substring_index(str, delim, count) - str
から、区切り文字 delim
が count
回出現する前の部分文字列を返します。count
が正の場合、(左から数えて) 最後の区切り文字の左側にあるすべてが返されます。count
が負の場合、(右から数えて) 最後の区切り文字の右側にあるすべてが返されます。関数 substring_index は、delim
を検索する際に大文字と小文字を区別します。
例
> SELECT substring_index('www.apache.org', '.', 2);
www.apache
開始 1.5.0
sum
sum(expr) - グループの値から計算された合計を返します。
例
> 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
開始 1.0.0
tan
tan(expr) - java.lang.Math.tan
によって計算されたかのように、expr
のタンジェントを返します。
引数
- expr - ラジアン単位の角度
例
> SELECT tan(0);
0.0
開始 1.4.0
tanh
tanh(expr) - java.lang.Math.tanh
によって計算されたかのように、expr
の双曲線タンジェントを返します。
引数
- expr - 双曲線角
例
> SELECT tanh(0);
0.0
開始 1.4.0
timestamp
timestamp(expr) - 値 expr
をターゲットのデータ型 timestamp
にキャストします。
開始 2.0.1
timestamp_micros
timestamp_micros(microseconds) - UTC エポックからのマイクロ秒数からタイムスタンプを作成します。
例
> SELECT timestamp_micros(1230219000123123);
2008-12-25 07:30:00.123123
開始 3.1.0
timestamp_millis
timestamp_millis(milliseconds) - UTC エポックからのミリ秒数からタイムスタンプを作成します。
例
> SELECT timestamp_millis(1230219000123);
2008-12-25 07:30:00.123
開始 3.1.0
timestamp_seconds
timestamp_seconds(seconds) - UTC エポックからの秒数 (小数も可) からタイムスタンプを作成します。
例
> SELECT timestamp_seconds(1230219000);
2008-12-25 07:30:00
> SELECT timestamp_seconds(1230219000.123);
2008-12-25 07:30:00.123
開始 3.1.0
tinyint
tinyint(expr) - 値 expr
をターゲットのデータ型 tinyint
にキャストします。
開始 2.0.1
to_binary
to_binary(str[, fmt]) - 入力 str
を、指定された fmt
に基づいてバイナリ値に変換します。fmt
は、"hex"、"utf-8"、"utf8"、または "base64" の大文字と小文字を区別しない文字列リテラルにすることができます。デフォルトでは、fmt
が省略された場合、変換のバイナリ形式は "hex" です。入力パラメーターの少なくとも 1 つが NULL の場合、関数は NULL を返します。
例
> SELECT to_binary('abc', 'utf-8');
abc
開始 3.3.0
to_char
to_char(numberExpr, formatExpr) - numberExpr
を formatExpr
に基づいて文字列に変換します。変換に失敗した場合は例外をスローします。形式は、大文字と小文字を区別せずに、次の文字で構成できます。'0' または '9': 0 から 9 までの期待される数字を指定します。形式文字列内の 0 または 9 のシーケンスは、入力値の数字のシーケンスと一致し、形式文字列内の対応するシーケンスと同じ長さの結果文字列を生成します。結果文字列は、0/9 シーケンスが一致する10進数値の部分よりも多くの桁数を含み、0で始まり、小数点の前にある場合は、ゼロで左埋めされます。それ以外の場合は、スペースで埋められます。'.' または 'D': 小数点の位置を指定します (オプション、一度のみ許可)。',' または 'G': グループ化 (千単位) 区切り文字 (,) の位置を指定します。各グループ化区切り文字の左側と右側に 0 または 9 がある必要があります。'$': $ 通貨記号の位置を指定します。この文字は一度だけ指定できます。'S' または 'MI': '-' または '+' 符号の位置を指定します (オプション、形式文字列の先頭または末尾に一度のみ許可)。'S' は正の値の場合は '+' を出力しますが、'MI' はスペースを出力することに注意してください。'PR': 形式文字列の末尾でのみ許可されます。入力値が負の場合、結果文字列が山かっこで囲まれることを指定します ('<1>').
例
> SELECT to_char(454, '999');
454
> SELECT to_char(454.00, '000D00');
454.00
> SELECT to_char(12454, '99G999');
12,454
> SELECT to_char(78.12, '$99.99');
$78.12
> SELECT to_char(-12454.8, '99G999D9S');
12,454.8-
開始 3.4.0
to_csv
to_csv(expr[, options]) - 指定された構造体の値を CSV 文字列で返します
例
> SELECT to_csv(named_struct('a', 1, 'b', 2));
1,2
> SELECT to_csv(named_struct('time', to_timestamp('2015-08-26', 'yyyy-MM-dd')), map('timestampFormat', 'dd/MM/yyyy'));
26/08/2015
開始 3.0.0
to_date
to_date(date_str[, fmt]) - date_str
式を fmt
式を使用して日付に解析します。入力が無効な場合は null を返します。デフォルトでは、fmt
が省略された場合は日付へのキャスト規則に従います。
引数
- date_str - 日付に解析される文字列。
- fmt - 従うべき日付形式パターン。有効な日付と時刻の形式パターンについては、日付と時刻のパターンを参照してください。
例
> SELECT to_date('2009-07-30 04:17:52');
2009-07-30
> SELECT to_date('2016-12-31', 'yyyy-MM-dd');
2016-12-31
開始 1.5.0
to_json
to_json(expr[, options]) - 指定された構造体の値を JSON 文字列で返します
例
> SELECT to_json(named_struct('a', 1, 'b', 2));
{"a":1,"b":2}
> SELECT to_json(named_struct('time', to_timestamp('2015-08-26', 'yyyy-MM-dd')), map('timestampFormat', 'dd/MM/yyyy'));
{"time":"26/08/2015"}
> SELECT to_json(array(named_struct('a', 1, 'b', 2)));
[{"a":1,"b":2}]
> SELECT to_json(map('a', named_struct('b', 1)));
{"a":{"b":1}}
> SELECT to_json(map(named_struct('a', 1),named_struct('b', 2)));
{"[1]":{"b":2}}
> SELECT to_json(map('a', 1));
{"a":1}
> SELECT to_json(array(map('a', 1)));
[{"a":1}]
開始 2.2.0
to_number
to_number(expr, fmt) - 文字列 'expr' を文字列形式 'fmt' に基づいて数値に変換します。変換に失敗した場合は例外をスローします。形式は、大文字と小文字を区別せずに、次の文字で構成できます。'0' または '9': 0 から 9 までの期待される数字を指定します。形式文字列内の 0 または 9 のシーケンスは、入力文字列内の数字のシーケンスと一致します。0/9 シーケンスが 0 で始まり、小数点の前にある場合、同じサイズの数字シーケンスのみと一致できます。それ以外の場合、シーケンスが 9 で始まるか、小数点の後の場合、同じサイズまたはそれより小さいサイズの数字シーケンスと一致できます。'.' または 'D': 小数点の位置を指定します (オプション、一度のみ許可)。',' または 'G': グループ化 (千単位) 区切り文字 (,) の位置を指定します。各グループ化区切り文字の左側と右側に 0 または 9 がある必要があります。'expr' は数値のサイズに関連するグループ化区切り文字と一致する必要があります。'$': $ 通貨記号の位置を指定します。この文字は一度だけ指定できます。'S' または 'MI': '-' または '+' 符号の位置を指定します (オプション、形式文字列の先頭または末尾に一度のみ許可)。'S' は '-' を許可しますが、'MI' は許可しません。'PR': 形式文字列の末尾でのみ許可されます。'expr' が山かっこで囲まれた負の数を示すことを指定します ('<1>').
例
> SELECT to_number('454', '999');
454
> SELECT to_number('454.00', '000.00');
454.00
> SELECT to_number('12,454', '99,999');
12454
> SELECT to_number('$78.12', '$99.99');
78.12
> SELECT to_number('12,454.8-', '99,999.9S');
-12454.8
開始 3.3.0
to_timestamp
to_timestamp(timestamp_str[, fmt]) - timestamp_str
式を fmt
式を使用してタイムスタンプに解析します。入力が無効な場合は null を返します。デフォルトでは、fmt
が省略された場合はタイムスタンプへのキャスト規則に従います。結果のデータ型は、構成 spark.sql.timestampType
の値と一致します。
引数
- timestamp_str - タイムスタンプに解析される文字列。
- fmt - 従うべきタイムスタンプ形式パターン。有効な日付と時刻の形式パターンについては、日付と時刻のパターンを参照してください。
例
> SELECT to_timestamp('2016-12-31 00:12:00');
2016-12-31 00:12:00
> SELECT to_timestamp('2016-12-31', 'yyyy-MM-dd');
2016-12-31 00:00:00
開始 2.2.0
to_timestamp_ltz
to_timestamp_ltz(timestamp_str[, fmt]) - timestamp_str
式を fmt
式を使用して、ローカルタイムゾーン付きのタイムスタンプに解析します。入力が無効な場合は null を返します。デフォルトでは、fmt
が省略された場合はタイムスタンプへのキャスト規則に従います。
引数
- timestamp_str - ローカルタイムゾーン付きのタイムスタンプに解析される文字列。
- fmt - 従うべきタイムスタンプ形式パターン。有効な日付と時刻の形式パターンについては、日付と時刻のパターンを参照してください。
例
> SELECT to_timestamp_ltz('2016-12-31 00:12:00');
2016-12-31 00:12:00
> SELECT to_timestamp_ltz('2016-12-31', 'yyyy-MM-dd');
2016-12-31 00:00:00
開始 3.4.0
to_timestamp_ntz
to_timestamp_ntz(timestamp_str[, fmt]) - timestamp_str
式を fmt
式を使用して、タイムゾーンなしのタイムスタンプに解析します。入力が無効な場合は null を返します。デフォルトでは、fmt
が省略された場合はタイムスタンプへのキャスト規則に従います。
引数
- timestamp_str - タイムゾーンなしのタイムスタンプに解析される文字列。
- fmt - 従うべきタイムスタンプ形式パターン。有効な日付と時刻の形式パターンについては、日付と時刻のパターンを参照してください。
例
> SELECT to_timestamp_ntz('2016-12-31 00:12:00');
2016-12-31 00:12:00
> SELECT to_timestamp_ntz('2016-12-31', 'yyyy-MM-dd');
2016-12-31 00:00:00
開始 3.4.0
to_unix_timestamp
to_unix_timestamp(timeExp[, fmt]) - 指定された時間の UNIX タイムスタンプを返します。
引数
- timeExp - UNIX タイムスタンプとして返される日付/タイムスタンプまたは文字列。
- fmt - 従うべき日付/時刻形式パターン。
timeExp
が文字列でない場合は無視されます。デフォルト値は "yyyy-MM-dd HH:mm:ss" です。有効な日付と時刻の形式パターンについては、日付と時刻のパターンを参照してください。
例
> SELECT to_unix_timestamp('2016-04-08', 'yyyy-MM-dd');
1460098800
開始 1.6.0
to_utc_timestamp
to_utc_timestamp(timestamp, timezone) - '2017-07-14 02:40:00.0' のようなタイムスタンプが与えられた場合、それを指定されたタイムゾーンの時間として解釈し、その時間を UTC のタイムスタンプとしてレンダリングします。たとえば、'GMT+1' は '2017-07-14 01:40:00.0' を生成します。
例
> SELECT to_utc_timestamp('2016-08-31', 'Asia/Seoul');
2016-08-30 15:00:00
開始 1.5.0
to_varchar
to_varchar(numberExpr, formatExpr) - numberExpr
を formatExpr
に基づいて文字列に変換します。変換に失敗した場合は例外をスローします。形式は、大文字と小文字を区別せずに、次の文字で構成できます。'0' または '9': 0 から 9 までの期待される数字を指定します。形式文字列内の 0 または 9 のシーケンスは、入力値の数字のシーケンスと一致し、形式文字列内の対応するシーケンスと同じ長さの結果文字列を生成します。結果文字列は、0/9 シーケンスが一致する10進数値の部分よりも多くの桁数を含み、0で始まり、小数点の前にある場合は、ゼロで左埋めされます。それ以外の場合は、スペースで埋められます。'.' または 'D': 小数点の位置を指定します (オプション、一度のみ許可)。',' または 'G': グループ化 (千単位) 区切り文字 (,) の位置を指定します。各グループ化区切り文字の左側と右側に 0 または 9 がある必要があります。'$': $ 通貨記号の位置を指定します。この文字は一度だけ指定できます。'S' または 'MI': '-' または '+' 符号の位置を指定します (オプション、形式文字列の先頭または末尾に一度のみ許可)。'S' は正の値の場合は '+' を出力しますが、'MI' はスペースを出力することに注意してください。'PR': 形式文字列の末尾でのみ許可されます。入力値が負の場合、結果文字列が山かっこで囲まれることを指定します ('<1>').
例
> SELECT to_varchar(454, '999');
454
> SELECT to_varchar(454.00, '000D00');
454.00
> SELECT to_varchar(12454, '99G999');
12,454
> SELECT to_varchar(78.12, '$99.99');
$78.12
> SELECT to_varchar(-12454.8, '99G999D9S');
12,454.8-
開始 3.5.0
transform
transform(expr, func) - 関数を使用して配列内の要素を変換します。
例
> SELECT transform(array(1, 2, 3), x -> x + 1);
[2,3,4]
> SELECT transform(array(1, 2, 3), (x, i) -> x + i);
[1,3,5]
開始 2.4.0
transform_keys
transform_keys(expr, func) - 関数を使用してマップ内の要素を変換します。
例
> SELECT transform_keys(map_from_arrays(array(1, 2, 3), array(1, 2, 3)), (k, v) -> k + 1);
{2:1,3:2,4:3}
> SELECT transform_keys(map_from_arrays(array(1, 2, 3), array(1, 2, 3)), (k, v) -> k + v);
{2:1,4:2,6:3}
開始 3.0.0
transform_values
transform_values(expr, func) - 関数を使用してマップ内の値を変換します。
例
> SELECT transform_values(map_from_arrays(array(1, 2, 3), array(1, 2, 3)), (k, v) -> v + 1);
{1:2,2:3,3:4}
> SELECT transform_values(map_from_arrays(array(1, 2, 3), array(1, 2, 3)), (k, v) -> k + v);
{1:2,2:4,3:6}
開始 3.0.0
translate
translate(input, from, to) - input
文字列を、from
文字列に存在する文字を to
文字列内の対応する文字に置き換えることによって変換します。
例
> SELECT translate('AaBbCc', 'abc', '123');
A1B2C3
開始 1.5.0
trim
trim(str) - str
から先頭と末尾の空白文字を削除します。
trim(BOTH FROM str) - str
から先頭と末尾の空白文字を削除します。
trim(LEADING FROM str) - str
から先頭の空白文字を削除します。
trim(TRAILING FROM str) - str
から末尾の空白文字を削除します。
trim(trimStr FROM str) - str
から先頭と末尾の trimStr
文字を削除します。
trim(BOTH trimStr FROM str) - str
から先頭と末尾の trimStr
文字を削除します。
trim(LEADING trimStr FROM str) - str
から先頭の trimStr
文字を削除します。
trim(TRAILING trimStr FROM str) - str
から末尾の trimStr
文字を削除します。
引数
- str - 文字列式
- trimStr - トリムするトリム文字列文字。デフォルト値は単一のスペースです。
- BOTH, FROM - 文字列の両端から文字列文字をトリミングすることを指定するキーワードです
- LEADING, FROM - 文字列の左端から文字列文字をトリミングすることを指定するキーワードです
- TRAILING, FROM - 文字列の右端から文字列文字をトリミングすることを指定するキーワードです
例
> SELECT trim(' SparkSQL ');
SparkSQL
> SELECT trim(BOTH FROM ' SparkSQL ');
SparkSQL
> SELECT trim(LEADING FROM ' SparkSQL ');
SparkSQL
> SELECT trim(TRAILING FROM ' SparkSQL ');
SparkSQL
> SELECT trim('SL' FROM 'SSparkSQLS');
parkSQ
> SELECT trim(BOTH 'SL' FROM 'SSparkSQLS');
parkSQ
> SELECT trim(LEADING 'SL' FROM 'SSparkSQLS');
parkSQLS
> SELECT trim(TRAILING 'SL' FROM 'SSparkSQLS');
SSparkSQ
開始 1.5.0
trunc
trunc(date, fmt) - 書式モデル fmt
で指定された単位に切り捨てられた日の時間部分を持つ date
を返します。
引数
- date - 日付値または有効な日付文字列
- fmt - 切り捨てられる単位を表す形式
- "YEAR"、"YYYY"、"YY" -
date
が属する年の最初の日付に切り捨てます - "QUARTER" -
date
が属する四半期の最初の日付に切り捨てます - "MONTH"、"MM"、"MON" -
date
が属する月の最初の日付に切り捨てます - "WEEK" -
date
が属する週の月曜日に切り捨てます
- "YEAR"、"YYYY"、"YY" -
例
> SELECT trunc('2019-08-04', 'week');
2019-07-29
> SELECT trunc('2019-08-04', 'quarter');
2019-07-01
> SELECT trunc('2009-02-12', 'MM');
2009-02-01
> SELECT trunc('2015-10-27', 'YEAR');
2015-01-01
開始 1.5.0
try_add
try_add(expr1, expr2) - expr1
と expr2
の合計を返し、オーバーフローの場合の結果は null になります。許容される入力型は、+
演算子と同じです。
例
> SELECT try_add(1, 2);
3
> SELECT try_add(2147483647, 1);
NULL
> SELECT try_add(date'2021-01-01', 1);
2021-01-02
> SELECT try_add(date'2021-01-01', interval 1 year);
2022-01-01
> SELECT try_add(timestamp'2021-01-01 00:00:00', interval 1 day);
2021-01-02 00:00:00
> SELECT try_add(interval 1 year, interval 2 year);
3-0
開始 3.2.0
try_aes_decrypt
try_aes_decrypt(expr, key[, mode[, padding[, aad]]]) - これは aes_decrypt
の特殊バージョンであり、同じ操作を実行しますが、復号化を実行できない場合にエラーを発生させる代わりに NULL 値を返します。
例
> SELECT try_aes_decrypt(unhex('6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'), '0000111122223333', 'GCM');
Spark SQL
> SELECT try_aes_decrypt(unhex('----------468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'), '0000111122223333', 'GCM');
NULL
開始 3.5.0
try_avg
try_avg(expr) - グループの値から計算された平均を返し、オーバーフローの場合の結果は null になります。
例
> SELECT try_avg(col) FROM VALUES (1), (2), (3) AS tab(col);
2.0
> SELECT try_avg(col) FROM VALUES (1), (2), (NULL) AS tab(col);
1.5
> SELECT try_avg(col) FROM VALUES (interval '2147483647 months'), (interval '1 months') AS tab(col);
NULL
開始 3.3.0
try_divide
try_divide(dividend, divisor) - dividend
/divisor
を返します。常に浮動小数点除算を実行します。expr2
が 0 の場合、結果は常に null になります。dividend
は数値または間隔である必要があります。divisor
は数値である必要があります。
例
> SELECT try_divide(3, 2);
1.5
> SELECT try_divide(2L, 2L);
1.0
> SELECT try_divide(1, 0);
NULL
> SELECT try_divide(interval 2 month, 2);
0-1
> SELECT try_divide(interval 2 month, 0);
NULL
開始 3.2.0
try_element_at
try_element_at(array, index) - 指定された(1から始まる)インデックスにある配列の要素を返します。インデックスが0の場合、Sparkはエラーをスローします。インデックスが0未満の場合、最後から最初の要素にアクセスします。インデックスが配列の長さを超える場合、関数は常にNULLを返します。
try_element_at(map, key) - 指定されたキーに対応する値を返します。キーがマップに含まれていない場合、関数は常にNULLを返します。
例
> SELECT try_element_at(array(1, 2, 3), 2);
2
> SELECT try_element_at(map(1, 'a', 2, 'b'), 2);
b
開始 3.3.0
try_multiply
try_multiply(expr1, expr2) - expr1
* expr2
を返し、オーバーフローが発生した場合は結果はNULLになります。使用可能な入力タイプは、*
演算子と同じです。
例
> SELECT try_multiply(2, 3);
6
> SELECT try_multiply(-2147483648, 10);
NULL
> SELECT try_multiply(interval 2 year, 3);
6-0
開始 3.3.0
try_subtract
try_subtract(expr1, expr2) - expr1
- expr2
を返し、オーバーフローが発生した場合は結果はNULLになります。使用可能な入力タイプは、-
演算子と同じです。
例
> SELECT try_subtract(2, 1);
1
> SELECT try_subtract(-2147483648, 1);
NULL
> SELECT try_subtract(date'2021-01-02', 1);
2021-01-01
> SELECT try_subtract(date'2021-01-01', interval 1 year);
2020-01-01
> SELECT try_subtract(timestamp'2021-01-02 00:00:00', interval 1 day);
2021-01-01 00:00:00
> SELECT try_subtract(interval 2 year, interval 1 year);
1-0
開始 3.3.0
try_sum
try_sum(expr) - グループの値から計算された合計を返します。オーバーフローが発生した場合は結果はNULLになります。
例
> SELECT try_sum(col) FROM VALUES (5), (10), (15) AS tab(col);
30
> SELECT try_sum(col) FROM VALUES (NULL), (10), (15) AS tab(col);
25
> SELECT try_sum(col) FROM VALUES (NULL), (NULL) AS tab(col);
NULL
> SELECT try_sum(col) FROM VALUES (9223372036854775807L), (1L) AS tab(col);
NULL
開始 3.3.0
try_to_binary
try_to_binary(str[, fmt]) - これは to_binary
の特別なバージョンであり、同じ操作を実行しますが、変換を実行できない場合はエラーを発生させる代わりにNULL値を返します。
例
> SELECT try_to_binary('abc', 'utf-8');
abc
> select try_to_binary('a!', 'base64');
NULL
> select try_to_binary('abc', 'invalidFormat');
NULL
開始 3.3.0
try_to_number
try_to_number(expr, fmt) - 文字列 'expr' を文字列形式 fmt
に基づいて数値に変換します。文字列 'expr' が期待される形式と一致しない場合はNULLを返します。形式はto_number関数と同じセマンティクスに従います。
例
> SELECT try_to_number('454', '999');
454
> SELECT try_to_number('454.00', '000.00');
454.00
> SELECT try_to_number('12,454', '99,999');
12454
> SELECT try_to_number('$78.12', '$99.99');
78.12
> SELECT try_to_number('12,454.8-', '99,999.9S');
-12454.8
開始 3.3.0
try_to_timestamp
try_to_timestamp(timestamp_str[, fmt]) - timestamp_str
式を fmt
式で解析してタイムスタンプに変換します。関数は、ANSI SQLモードの有効/無効に関わらず、無効な入力の場合は常にNULLを返します。デフォルトでは、fmt
が省略された場合、タイムスタンプへのキャスト規則に従います。結果のデータ型は、構成 spark.sql.timestampType
の値と一致します。
引数
- timestamp_str - タイムスタンプに解析される文字列。
- fmt - 従うべきタイムスタンプ形式パターン。有効な日付と時刻の形式パターンについては、日付と時刻のパターンを参照してください。
例
> SELECT try_to_timestamp('2016-12-31 00:12:00');
2016-12-31 00:12:00
> SELECT try_to_timestamp('2016-12-31', 'yyyy-MM-dd');
2016-12-31 00:00:00
> SELECT try_to_timestamp('foo', 'yyyy-MM-dd');
NULL
開始 3.4.0
typeof
typeof(expr) - 入力のデータ型に対するDDL形式の型文字列を返します。
例
> SELECT typeof(1);
int
> SELECT typeof(array(1));
array<int>
開始 3.0.0
ucase
ucase(str) - str
のすべての文字を大文字に変更して返します。
例
> SELECT ucase('SparkSql');
SPARKSQL
開始 1.0.1
unbase64
unbase64(str) - base64文字列 str
をバイナリに変換します。
例
> SELECT unbase64('U3BhcmsgU1FM');
Spark SQL
開始 1.5.0
unhex
unhex(expr) - 16進数 expr
をバイナリに変換します。
例
> SELECT decode(unhex('537061726B2053514C'), 'UTF-8');
Spark SQL
開始 1.5.0
unix_date
unix_date(date) - 1970-01-01からの日数を返します。
例
> SELECT unix_date(DATE("1970-01-02"));
1
開始 3.1.0
unix_micros
unix_micros(timestamp) - 1970-01-01 00:00:00 UTCからのマイクロ秒数を返します。
例
> SELECT unix_micros(TIMESTAMP('1970-01-01 00:00:01Z'));
1000000
開始 3.1.0
unix_millis
unix_millis(timestamp) - 1970-01-01 00:00:00 UTCからのミリ秒数を返します。上位の精度は切り捨てられます。
例
> SELECT unix_millis(TIMESTAMP('1970-01-01 00:00:01Z'));
1000
開始 3.1.0
unix_seconds
unix_seconds(timestamp) - 1970-01-01 00:00:00 UTCからの秒数を返します。上位の精度は切り捨てられます。
例
> SELECT unix_seconds(TIMESTAMP('1970-01-01 00:00:01Z'));
1
開始 3.1.0
unix_timestamp
unix_timestamp([timeExp[, fmt]]) - 現在または指定された時間のUNIXタイムスタンプを返します。
引数
- timeExp - 日付/タイムスタンプまたは文字列。提供されない場合、デフォルトは現在の時刻です。
- fmt - 従うべき日付/時刻形式パターン。
timeExp
が文字列でない場合は無視されます。デフォルト値は "yyyy-MM-dd HH:mm:ss" です。有効な日付と時刻の形式パターンについては、日付と時刻のパターン を参照してください。
例
> SELECT unix_timestamp();
1476884637
> SELECT unix_timestamp('2016-04-08', 'yyyy-MM-dd');
1460041200
開始 1.5.0
upper
upper(str) - str
のすべての文字を大文字に変更して返します。
例
> SELECT upper('SparkSql');
SPARKSQL
開始 1.0.1
url_decode
url_decode(str) - 特定のエンコーディングスキームを使用して、 'application/x-www-form-urlencoded' 形式の str
をデコードします。
引数
- str - デコードする文字列式
例
> SELECT url_decode('https%3A%2F%2Fspark.apache.org');
https://spark.dokyumento.jp
開始 3.4.0
url_encode
url_encode(str) - 特定のエンコーディングスキームを使用して、文字列を 'application/x-www-form-urlencoded' 形式に変換します。
引数
str - 変換する文字列式
例
> SELECT url_encode('https://spark.dokyumento.jp');
https%3A%2F%2Fspark.apache.org
開始 3.4.0
user
user() - 現在の実行コンテキストのユーザー名。
例
> SELECT user();
mockingjay
開始 3.2.0
uuid
uuid() - 汎用一意識別子 (UUID) 文字列を返します。値は正規のUUID 36文字の文字列として返されます。
例
> SELECT uuid();
46707d92-02f4-4817-8116-a4c3b23e6266
注
この関数は非決定的です。
開始 2.3.0
var_pop
var_pop(expr) - グループの値から計算された母集団分散を返します。
例
> SELECT var_pop(col) FROM VALUES (1), (2), (3) AS tab(col);
0.6666666666666666
開始 1.6.0
var_samp
var_samp(expr) - グループの値から計算された標本分散を返します。
例
> SELECT var_samp(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
開始 1.6.0
variance
variance(expr) - グループの値から計算された標本分散を返します。
例
> SELECT variance(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
開始 1.6.0
version
version() - Sparkのバージョンを返します。文字列には2つのフィールドがあり、最初のフィールドはリリースバージョン、2番目のフィールドはgitリビジョンです。
例
> SELECT version();
3.1.0 a6d6ea3efedbad14d99c24143834cd4e2e52fb40
開始 3.0.0
weekday
weekday(date) - 日付/タイムスタンプの曜日を返します (0 = 月曜日、1 = 火曜日、...、6 = 日曜日)。
例
> SELECT weekday('2009-07-30');
3
開始 2.4.0
weekofyear
weekofyear(date) - 指定された日付の年の週を返します。週は月曜日に始まり、週1は3日以上のある最初の週とみなされます。
例
> SELECT weekofyear('2008-02-20');
8
開始 1.5.0
when
CASE WHEN expr1 THEN expr2 [WHEN expr3 THEN expr4]* [ELSE expr5] END - expr1
= true の場合、expr2
を返します。それ以外の場合、expr3
= true の場合は expr4
を返します。それ以外の場合は expr5
を返します。
引数
- expr1, expr3 - 分岐条件式はすべてブール型である必要があります。
- expr2, expr4, expr5 - 分岐値式とelse値式はすべて同じ型であるか、共通の型に強制変換可能である必要があります。
例
> SELECT CASE WHEN 1 > 0 THEN 1 WHEN 2 > 0 THEN 2.0 ELSE 1.2 END;
1.0
> SELECT CASE WHEN 1 < 0 THEN 1 WHEN 2 > 0 THEN 2.0 ELSE 1.2 END;
2.0
> SELECT CASE WHEN 1 < 0 THEN 1 WHEN 2 < 0 THEN 2.0 END;
NULL
開始 1.0.1
width_bucket
width_bucket(value, min_value, max_value, num_bucket) - value
が、min_value
から max_value
の範囲で、num_bucket
バケットを持つ等幅ヒストグラムで割り当てられるバケット番号を返します。"
例
> SELECT width_bucket(5.3, 0.2, 10.6, 5);
3
> SELECT width_bucket(-2.1, 1.3, 3.4, 3);
0
> SELECT width_bucket(8.1, 0.0, 5.7, 4);
5
> SELECT width_bucket(-0.9, 5.2, 0.5, 2);
3
> SELECT width_bucket(INTERVAL '0' YEAR, INTERVAL '0' YEAR, INTERVAL '10' YEAR, 10);
1
> SELECT width_bucket(INTERVAL '1' YEAR, INTERVAL '0' YEAR, INTERVAL '10' YEAR, 10);
2
> SELECT width_bucket(INTERVAL '0' DAY, INTERVAL '0' DAY, INTERVAL '10' DAY, 10);
1
> SELECT width_bucket(INTERVAL '1' DAY, INTERVAL '0' DAY, INTERVAL '10' DAY, 10);
2
開始 3.1.0
window
window(time_column, window_duration[, slide_duration[, start_time]]) - タイムスタンプを指定する列に基づいて、行を1つ以上の時間ウィンドウにバケット化します。ウィンドウの開始は包括的ですが、ウィンドウの終了は排他的です。例えば、12:05はウィンドウ[12:05,12:10)に含まれますが、[12:00,12:05)には含まれません。ウィンドウはマイクロ秒単位の精度をサポートできます。月単位のウィンドウはサポートされていません。詳細な説明と例については、構造化ストリーミングガイドドキュメントの「イベント時間のウィンドウ操作」を参照してください。
引数
- time_column - 時間でウィンドウ化するためのタイムスタンプとして使用する列または式。時間列はTimestampTypeである必要があります。
- window_duration - "interval value"で表されるウィンドウの幅を指定する文字列。(詳細についてはインターバルリテラルを参照してください。)期間は固定の長さであり、カレンダーに従って時間とともに変化しないことに注意してください。
- slide_duration - "interval value"で表されるウィンドウのスライド間隔を指定する文字列。新しいウィンドウは、
slide_duration
ごとに生成されます。window_duration
以下である必要があります。この期間も同様に絶対的であり、カレンダーに従って変化しません。 - start_time - ウィンドウ間隔を開始するための1970-01-01 00:00:00 UTCに対するオフセット。たとえば、1時間ごとのタンブリングウィンドウが、1時間後15分から開始されるようにする場合、たとえば12:15〜13:15、13:15〜14:15 ...
start_time
を15 minutes
として指定します。
例
> SELECT a, window.start, window.end, count(*) as cnt FROM VALUES ('A1', '2021-01-01 00:00:00'), ('A1', '2021-01-01 00:04:30'), ('A1', '2021-01-01 00:06:00'), ('A2', '2021-01-01 00:01:00') AS tab(a, b) GROUP by a, window(b, '5 minutes') ORDER BY a, start;
A1 2021-01-01 00:00:00 2021-01-01 00:05:00 2
A1 2021-01-01 00:05:00 2021-01-01 00:10:00 1
A2 2021-01-01 00:00:00 2021-01-01 00:05:00 1
> SELECT a, window.start, window.end, count(*) as cnt FROM VALUES ('A1', '2021-01-01 00:00:00'), ('A1', '2021-01-01 00:04:30'), ('A1', '2021-01-01 00:06:00'), ('A2', '2021-01-01 00:01:00') AS tab(a, b) GROUP by a, window(b, '10 minutes', '5 minutes') ORDER BY a, start;
A1 2020-12-31 23:55:00 2021-01-01 00:05:00 2
A1 2021-01-01 00:00:00 2021-01-01 00:10:00 3
A1 2021-01-01 00:05:00 2021-01-01 00:15:00 1
A2 2020-12-31 23:55:00 2021-01-01 00:05:00 1
A2 2021-01-01 00:00:00 2021-01-01 00:10:00 1
開始 2.0.0
window_time
window_time(window_column) - ウィンドウのイベント時間値に使用できる時間/セッションウィンドウ列から時間値を抽出します。抽出された時間は (window.end - 1) であり、集計ウィンドウが排他的な上限を持つことを反映しています- [start, end) 詳細な説明と例については、構造化ストリーミングガイドドキュメントの「イベント時間のウィンドウ操作」を参照してください。
引数
- window_column - 時間/セッションウィンドウを表す列。
例
> SELECT a, window.start as start, window.end as end, window_time(window), cnt FROM (SELECT a, window, count(*) as cnt FROM VALUES ('A1', '2021-01-01 00:00:00'), ('A1', '2021-01-01 00:04:30'), ('A1', '2021-01-01 00:06:00'), ('A2', '2021-01-01 00:01:00') AS tab(a, b) GROUP by a, window(b, '5 minutes') ORDER BY a, window.start);
A1 2021-01-01 00:00:00 2021-01-01 00:05:00 2021-01-01 00:04:59.999999 2
A1 2021-01-01 00:05:00 2021-01-01 00:10:00 2021-01-01 00:09:59.999999 1
A2 2021-01-01 00:00:00 2021-01-01 00:05:00 2021-01-01 00:04:59.999999 1
開始 3.4.0
xpath
xpath(xml, xpath) - XPath式に一致するxmlのノード内の値の文字列配列を返します。
例
> SELECT xpath('<a><b>b1</b><b>b2</b><b>b3</b><c>c1</c><c>c2</c></a>','a/b/text()');
["b1","b2","b3"]
開始 2.0.0
xpath_boolean
xpath_boolean(xml, xpath) - XPath式がtrueと評価されるか、一致するノードが見つかった場合はtrueを返します。
例
> SELECT xpath_boolean('<a><b>1</b></a>','a/b');
true
開始 2.0.0
xpath_double
xpath_double(xml, xpath) - double値を返します。一致するものが見つからない場合は値ゼロ、一致するものが見つかったが値が数値でない場合はNaNを返します。
例
> SELECT xpath_double('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3.0
開始 2.0.0
xpath_float
xpath_float(xml, xpath) - float値を返します。一致するものが見つからない場合は値ゼロ、一致するものが見つかったが値が数値でない場合はNaNを返します。
例
> SELECT xpath_float('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3.0
開始 2.0.0
xpath_int
xpath_int(xml, xpath) - 整数値を返します。一致するものが見つからない場合は値ゼロ、一致するものが見つかったが値が数値でない場合は値ゼロを返します。
例
> SELECT xpath_int('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3
開始 2.0.0
xpath_long
xpath_long(xml, xpath) - long整数値を返します。一致するものが見つからない場合は値ゼロ、一致するものが見つかったが値が数値でない場合は値ゼロを返します。
例
> SELECT xpath_long('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3
開始 2.0.0
xpath_number
xpath_number(xml, xpath) - double値を返します。一致するものが見つからない場合は値ゼロ、一致するものが見つかったが値が数値でない場合はNaNを返します。
例
> SELECT xpath_number('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3.0
開始 2.0.0
xpath_short
xpath_short(xml, xpath) - short整数値を返します。一致するものが見つからない場合は値ゼロ、一致するものが見つかったが値が数値でない場合は値ゼロを返します。
例
> SELECT xpath_short('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3
開始 2.0.0
xpath_string
xpath_string(xml, xpath) - XPath式に一致する最初のxmlノードのテキストコンテンツを返します。
例
> SELECT xpath_string('<a><b>b</b><c>cc</c></a>','a/c');
cc
開始 2.0.0
xxhash64
xxhash64(expr1, expr2, ...) - 引数の64ビットハッシュ値を返します。ハッシュシードは42です。
例
> SELECT xxhash64('Spark', array(123), 2);
5602566077635097486
開始 3.0.0
year
year(date) - 日付/タイムスタンプの年コンポーネントを返します。
例
> SELECT year('2016-07-30');
2016
開始 1.5.0
zip_with
zip_with(left, right, func) - 2つの指定された配列を要素ごとに関数を使用して単一の配列にマージします。一方の配列が短い場合、関数を適用する前に、長い配列の長さに一致するように末尾にnullが追加されます。
例
> SELECT zip_with(array(1, 2, 3), array('a', 'b', 'c'), (x, y) -> (y, x));
[{"y":"a","x":1},{"y":"b","x":2},{"y":"c","x":3}]
> SELECT zip_with(array(1, 2), array(3, 4), (x, y) -> x + y);
[4,6]
> SELECT zip_with(array('a', 'b', 'c'), array('d', 'e', 'f'), (x, y) -> concat(x, y));
["ad","be","cf"]
開始 2.4.0
|
expr1 | expr2 - expr1
と expr2
のビット単位ORの結果を返します。
例
> SELECT 3 | 5;
7
開始 1.4.0
||
expr1 || expr2 - expr1
と expr2
の連結を返します。
例
> SELECT 'Spark' || 'SQL';
SparkSQL
> SELECT array(1, 2, 3) || array(4, 5) || array(6);
[1,2,3,4,5,6]
注
配列に対する || は2.4.0から利用可能です。
開始 2.3.0
~
~ expr - expr
のビット単位NOTの結果を返します。
例
> SELECT ~ 0;
-1
開始 1.4.0