組み込み関数
!
! expr - 論理否定。
例
> SELECT ! true;
false
> SELECT ! false;
true
> SELECT ! NULL;
NULL
Since 1.0.0
!=
expr1 != expr2 - expr1 が expr2 と等しくない場合に true を返します。それ以外の場合は false を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、等価比較で使用できる型である必要があります。Map 型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 1 != 2;
true
> SELECT 1 != '2';
true
> SELECT true != NULL;
NULL
> SELECT NULL != NULL;
NULL
Since 1.0.0
%
expr1 % expr2、または mod(expr1, expr2) - expr1 / expr2 の余りを返します。
例
> SELECT 2 % 1.8;
0.2
> SELECT MOD(2, 1.8);
0.2
Since 1.0.0
&
expr1 & expr2 - expr1 と expr2 のビットごとの AND の結果を返します。
例
> SELECT 3 & 5;
1
Since 1.4.0
*
expr1 * expr2 - expr1 * expr2 を返します。
例
> SELECT 2 * 3;
6
Since 1.0.0
+
expr1 + expr2 - expr1 + expr2 を返します。
例
> SELECT 1 + 2;
3
Since 1.0.0
-
expr1 - expr2 - expr1 - expr2 を返します。
例
> SELECT 2 - 1;
1
Since 1.0.0
/
expr1 / expr2 - expr1 / expr2 を返します。常に浮動小数点除算を実行します。
例
> SELECT 3 / 2;
1.5
> SELECT 2L / 2L;
1.0
Since 1.0.0
<
expr1 < expr2 - expr1 が expr2 より小さい場合に true を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、順序付け可能な型である必要があります。たとえば、map 型は順序付け可能ではないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> 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
Since 1.0.0
<<
base << exp - ビットごとの左シフト。
例
> SELECT shiftleft(2, 1);
4
> SELECT 2 << 1;
4
注意
<< 演算子は、Spark 4.0.0 で shiftleft のエイリアスとして追加されました。
Since 4.0.0
<=
expr1 <= expr2 - expr1 が expr2 以下の場合に true を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、順序付け可能な型である必要があります。たとえば、map 型は順序付け可能ではないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> 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
Since 1.0.0
<=>
expr1 <=> expr2 - NULL でないオペランドについては EQUAL(=) 演算子と同じ結果を返しますが、両方が NULL の場合は true を返し、片方が NULL の場合は false を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、等価比較で使用できる型である必要があります。Map 型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 <=> 2;
true
> SELECT 1 <=> '1';
true
> SELECT true <=> NULL;
false
> SELECT NULL <=> NULL;
true
Since 1.1.0
<>
expr1 != expr2 - expr1 が expr2 と等しくない場合に true を返します。それ以外の場合は false を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、等価比較で使用できる型である必要があります。Map 型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 1 != 2;
true
> SELECT 1 != '2';
true
> SELECT true != NULL;
NULL
> SELECT NULL != NULL;
NULL
Since 1.0.0
=
expr1 = expr2 - expr1 が expr2 と等しい場合に true を返します。それ以外の場合は false を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、等価比較で使用できる型である必要があります。Map 型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 = 2;
true
> SELECT 1 = '1';
true
> SELECT true = NULL;
NULL
> SELECT NULL = NULL;
NULL
Since 1.0.0
==
expr1 == expr2 - expr1 が expr2 と等しい場合に true を返します。それ以外の場合は false を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、等価比較で使用できる型である必要があります。Map 型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> SELECT 2 == 2;
true
> SELECT 1 == '1';
true
> SELECT true == NULL;
NULL
> SELECT NULL == NULL;
NULL
Since 1.0.0
>
expr1 > expr2 - expr1 が expr2 より大きい場合に true を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、順序付け可能な型である必要があります。たとえば、map 型は順序付け可能ではないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> 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
Since 1.0.0
>=
expr1 >= expr2 - expr1 が expr2 以上の場合に true を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、順序付け可能な型である必要があります。たとえば、map 型は順序付け可能ではないため、サポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> 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
Since 1.0.0
>>
base >> expr - ビットごとの (符号付き) 右シフト。
例
> SELECT shiftright(4, 1);
2
> SELECT 4 >> 1;
2
注意
>> 演算子は、Spark 4.0.0 で shiftright のエイリアスとして追加されました。
Since 4.0.0
>>>
base >>> expr - ビットごとの (符号なし) 右シフト。
例
> SELECT shiftrightunsigned(4, 1);
2
> SELECT 4 >>> 1;
2
注意
>>> 演算子は、Spark 4.0.0 で shiftrightunsigned のエイリアスとして追加されました。
Since 4.0.0
^
expr1 ^ expr2 - expr1 と expr2 のビットごとの排他的 OR の結果を返します。
例
> SELECT 3 ^ 5;
6
Since 1.4.0
abs
abs(expr) - 数値または間隔の値の絶対値を返します。
例
> SELECT abs(-1);
1
> SELECT abs(INTERVAL -'1-1' YEAR TO MONTH);
1-1
Since 1.2.0
acos
acos(expr) - expr の逆余弦(アークコサインとも呼ばれます)を返します。java.lang.Math.acos によって計算される場合と同様です。
例
> SELECT acos(1);
0.0
> SELECT acos(2);
NaN
Since 1.4.0
acosh
acosh(expr) - expr の逆双曲線余弦を返します。
例
> SELECT acosh(1);
0.0
> SELECT acosh(0);
NaN
Since 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
Since 1.5.0
aes_decrypt
aes_decrypt(expr, key[, mode[, padding[, aad]]]) - mode および padding で AES を使用して 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
Since 3.3.0
aes_encrypt
aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]]) - 指定された mode および padding で 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
Since 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
Since 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
Since 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
Since 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
注意
この関数は決定論的ではありません。
Since 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
Since 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]
Since 2.1.0
array
array(expr, ...) - 指定された要素を持つ配列を返します。
例
> SELECT array(1, 2, 3);
[1,2,3]
Since 1.1.0
array_agg
array_agg(expr) - 重複しない要素のリストを収集して返します。
例
> SELECT array_agg(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2,1]
注意
この関数は決定論的ではありません。なぜなら、収集された結果の順序は、シャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 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
Since 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"]
Since 3.4.0
array_contains
array_contains(array, value) - 配列が値を含んでいる場合に true を返します。
例
> SELECT array_contains(array(1, 2, 3), 2);
true
Since 1.5.0
array_distinct
array_distinct(array) - 配列から重複する値を削除します。
例
> SELECT array_distinct(array(1, 2, 3, null, 3));
[1,2,3,null]
Since 2.4.0
array_except
array_except(array1, array2) - array1 にはあるが array2 にはない要素の配列を、重複なしで返します。
例
> SELECT array_except(array(1, 2, 3), array(1, 3, 5));
[2]
Since 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]
Since 3.4.0
array_intersect
array_intersect(array1, array2) - array1 と array2 の共通部分の要素の配列を、重複なしで返します。
例
> SELECT array_intersect(array(1, 2, 3), array(1, 3, 5));
[1,3]
Since 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
Since 2.4.0
array_max
array_max(array) - 配列内の最大値を返します。double/float 型の場合、NaN は任意の非 NaN 要素よりも大きいです。NULL 要素はスキップされます。
例
> SELECT array_max(array(1, 20, null, 3));
20
Since 2.4.0
array_min
array_min(array) - 配列内の最小値を返します。double/float 型の場合、NaN は任意の非 NaN 要素よりも大きいです。NULL 要素はスキップされます。
例
> SELECT array_min(array(1, 20, null, 3));
1
Since 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
Since 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
Since 3.5.0
array_remove
array_remove(array, element) - 配列から element と等しいすべての要素を削除します。
例
> SELECT array_remove(array(1, 2, 3, null, 3), 3);
[1,2,null]
Since 2.4.0
array_repeat
array_repeat(element, count) - 指定された要素を count 回繰り返した配列を返します。
例
> SELECT array_repeat('123', 2);
["123","123"]
Since 2.4.0
array_size
array_size(expr) - 配列のサイズを返します。NULL 入力の場合、関数は NULL を返します。
例
> SELECT array_size(array('b', 'd', 'c', 'a'));
4
Since 3.3.0
array_sort
array_sort(expr, func) - 入力配列をソートします。func が省略された場合、昇順でソートします。入力配列の要素は順序付け可能である必要があります。double/float 型の場合、NaN は任意の非 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]
Since 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]
Since 2.4.0
arrays_overlap
arrays_overlap(a1, a2) - a1 が a2 にも存在する少なくとも 1 つの NULL でない要素を含んでいる場合に true を返します。配列に共通の要素がなく、両方が空でない場合、またはいずれかの配列に NULL 要素が含まれている場合、NULL を返します。それ以外の場合は false を返します。
例
> SELECT arrays_overlap(array(1, 2, 3), array(3, 4, 5));
true
Since 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}]
Since 2.4.0
ascii
ascii(str) - str の最初の文字の数値コードを返します。
例
> SELECT ascii('222');
50
> SELECT ascii(2);
50
Since 1.5.0
asin
asin(expr) - expr の逆正弦(アークサインとも呼ばれます)を返します。java.lang.Math.asin によって計算される場合と同様です。
例
> SELECT asin(0);
0.0
> SELECT asin(2);
NaN
Since 1.4.0
asinh
asinh(expr) - expr の逆双曲線正弦を返します。
例
> SELECT asinh(0);
0.0
Since 3.0.0
assert_true
assert_true(expr [, message]) - expr が true でない場合に例外をスローします。
例
> SELECT assert_true(0 < 1);
NULL
Since 2.0.0
atan
atan(expr) - expr の逆正接(アークタンジェントとも呼ばれます)を返します。java.lang.Math.atan によって計算される場合と同様です。
例
> SELECT atan(0);
0.0
Since 1.4.0
atan2
atan2(exprY, exprX) - 平面上の正の x 軸と座標 (exprX, exprY) で与えられる点との間の角度をラジアンで返します。java.lang.Math.atan2 によって計算される場合と同様です。
引数
- exprY - y 軸の座標。
- exprX - x 軸の座標。
例
> SELECT atan2(0, 0);
0.0
Since 1.4.0
atanh
atanh(expr) - expr の逆双曲線正接を返します。
例
> SELECT atanh(0);
0.0
> SELECT atanh(2);
NaN
Since 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
Since 1.0.0
base64
base64(bin) - バイナリ bin を base64 文字列に変換します。
例
> SELECT base64('Spark SQL');
U3BhcmsgU1FM
> SELECT base64(x'537061726b2053514c');
U3BhcmsgU1FM
Since 1.5.0
between
input [NOT] between lower AND upper - input が lower と upper の間に [ない] 場合に true を評価します。
引数
- input - lower および upper バウンドと比較される式。
- lower - between チェックの下限。
- upper - between チェックの上限。
例
> SELECT 0.5 between 0.1 AND 1.0;
true
Since 1.0.0
bigint
bigint(expr) - 値 expr をターゲットデータ型 bigint にキャストします。
Since 2.0.1
bin
bin(expr) - long 値 expr のバイナリ表現の文字列を返します。
例
> SELECT bin(13);
1101
> SELECT bin(-13);
1111111111111111111111111111111111111111111111111111111111110011
> SELECT bin(13.3);
1101
Since 1.5.0
binary
binary(expr) - 値 expr をターゲットデータ型 binary にキャストします。
Since 2.0.1
bit_and
bit_and(expr) - NULL でないすべての入力値のビットごとの AND を返します。NULL の場合は NULL を返します。
例
> SELECT bit_and(col) FROM VALUES (3), (5) AS tab(col);
1
Since 3.0.0
bit_count
bit_count(expr) - 引数 expr のセットされているビットの数を符号なし 64 ビット整数として返します。引数が NULL の場合は NULL を返します。
例
> SELECT bit_count(0);
0
Since 3.0.0
bit_get
bit_get(expr, pos) - 指定された位置にあるビットの値 (0 または 1) を返します。位置は右から左へ 0 から数えられます。位置引数は負にできません。
例
> SELECT bit_get(11, 0);
1
> SELECT bit_get(11, 2);
0
Since 3.2.0
bit_length
bit_length(expr) - 文字列データのビット長、またはバイナリデータのビット数を返します。
例
> SELECT bit_length('Spark SQL');
72
> SELECT bit_length(x'537061726b2053514c');
72
Since 2.3.0
bit_or
bit_or(expr) - NULL でないすべての入力値のビットごとの OR を返します。NULL の場合は NULL を返します。
例
> SELECT bit_or(col) FROM VALUES (3), (5) AS tab(col);
7
Since 3.0.0
bit_xor
bit_xor(expr) - NULL でないすべての入力値のビットごとの XOR を返します。NULL の場合は NULL を返します。
例
> SELECT bit_xor(col) FROM VALUES (3), (5) AS tab(col);
6
Since 3.0.0
bitmap_bit_position
bitmap_bit_position(child) - 指定された入力 child 式のビット位置を返します。
例
> SELECT bitmap_bit_position(1);
0
> SELECT bitmap_bit_position(123);
122
Since 3.5.0
bitmap_bucket_number
bitmap_bucket_number(child) - 指定された入力 child 式のバケット番号を返します。
例
> SELECT bitmap_bucket_number(123);
1
> SELECT bitmap_bucket_number(0);
0
Since 3.5.0
bitmap_construct_agg
bitmap_construct_agg(child) - child 式の値からセットされたビットの位置を持つビットマップを返します。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
Since 3.5.0
bitmap_count
bitmap_count(child) - child ビットマップでセットされたビットの数を返します。
例
> SELECT bitmap_count(X '1010');
2
> SELECT bitmap_count(X 'FFFF');
16
> SELECT bitmap_count(X '0');
0
Since 3.5.0
bitmap_or_agg
bitmap_or_agg(child) - 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
Since 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
Since 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
Since 3.0.0
boolean
boolean(expr) - 値 expr をターゲットデータ型 boolean にキャストします。
Since 2.0.1
bround
bround(expr, d) - HALF_EVEN 丸めモードを使用して、expr を d 桁に丸めた値を返します。
例
> SELECT bround(2.5, 0);
2
> SELECT bround(25, -1);
20
Since 2.0.0
btrim
btrim(str) - str から先頭と末尾のスペース文字を削除します。
btrim(str, trimStr) - str から先頭と末尾の trimStr 文字を削除します。
引数
- str - 文字列式。
- trimStr - トリミングするトリム文字列の文字。デフォルト値はスペース 1 文字です。
例
> 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
Since 3.2.0
cardinality
cardinality(expr) - 配列またはマップのサイズを返します。この関数は、spark.sql.ansi.enabled が false で spark.sql.legacy.sizeOfNull が true の場合のみ、NULL 入力に対して -1 を返します。それ以外の場合は、NULL 入力に対して NULL を返します。デフォルト設定では、この関数は NULL 入力に対して NULL を返します。
例
> SELECT cardinality(array('b', 'd', 'c', 'a'));
4
> SELECT cardinality(map('a', 1, 'b', 2));
2
Since 2.4.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
Since 1.0.1
cast
cast(expr AS type) - 値 expr をターゲットデータ型 type にキャストします。expr :: type という代替キャスト構文もサポートされています。
例
> SELECT cast('10' as int);
10
> SELECT '10' :: int;
10
Since 1.0.0
cbrt
cbrt(expr) - expr の立方根を返します。
例
> SELECT cbrt(27.0);
3.0
Since 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
Since 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
Since 3.3.0
char
char(expr) - expr のバイナリ等価文字に対応する ASCII 文字を返します。n が 256 より大きい場合、結果は chr(n % 256) と同等です。
例
> SELECT char(65);
A
Since 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
Since 2.3.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
Since 2.3.0
chr
chr(expr) - expr のバイナリ等価文字に対応する ASCII 文字を返します。n が 256 より大きい場合、結果は chr(n % 256) と同等です。
例
> SELECT chr(65);
A
Since 2.3.0
coalesce
coalesce(expr1, expr2, ...) - 最初の NULL でない引数を返します。存在しない場合は NULL を返します。
例
> SELECT coalesce(NULL, 1, NULL);
1
Since 1.0.0
collate
collate(expr, collationName) - 指定された照合順序で式をマークします。
引数
- expr - 照合順序を実行する文字列式。
- collationName - 照合順序名を指定する折りたたみ可能な文字列式。
例
> SELECT COLLATION('Spark SQL' collate UTF8_LCASE);
SYSTEM.BUILTIN.UTF8_LCASE
Since 4.0.0
collation
collation(expr) - 指定された式の照合順序名を返します。
引数
- expr - 照合順序を実行する文字列式。
例
> SELECT collation('Spark SQL');
SYSTEM.BUILTIN.UTF8_BINARY
Since 4.0.0
collations
collations() - すべての Spark SQL 文字列照合順序を取得します。
例
> SELECT * FROM collations() WHERE NAME = 'UTF8_BINARY';
SYSTEM BUILTIN UTF8_BINARY NULL NULL ACCENT_SENSITIVE CASE_SENSITIVE NO_PAD NULL
Since 4.0.0
collect_list
collect_list(expr) - 重複しない要素のリストを収集して返します。
例
> SELECT collect_list(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2,1]
注意
この関数は決定論的ではありません。なぜなら、収集された結果の順序は、シャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 2.0.0
collect_set
collect_set(expr) - 一意な要素のセットを収集して返します。
例
> SELECT collect_set(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2]
注意
この関数は決定論的ではありません。なぜなら、収集された結果の順序は、シャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 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 以降で利用可能です。
Since 1.5.0
concat_ws
concat_ws(sep[, str | array(str)]+) - 区切り文字で区切られた文字列の連結を返します。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
Since 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
Since 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
Since 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
Since 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
Since 1.6.0
cos
cos(expr) - expr の余弦を返します。java.lang.Math.cos によって計算される場合と同様です。
引数
- expr - ラジアン単位の角度。
例
> SELECT cos(0);
1.0
Since 1.4.0
cosh
cosh(expr) - expr の双曲線余弦を返します。java.lang.Math.cosh によって計算される場合と同様です。
引数
- expr - 双曲線角度。
例
> SELECT cosh(0);
1.0
Since 1.4.0
cot
cot(expr) - expr の余接を返します。1/java.lang.Math.tan によって計算される場合と同様です。
引数
- expr - ラジアン単位の角度。
例
> SELECT cot(1);
0.6420926159343306
Since 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
Since 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
Since 3.0.0
count_min_sketch
count_min_sketch(col, eps, confidence, seed) - 指定された eps、confidence、seed を持つ列のカウント最小スキッチを返します。結果はバイト配列であり、使用前に CountMinSketch に逆シリアル化できます。カウント最小スキッチは、サブ線形空間を使用してカーディナリティ推定に使用される確率的データ構造です。
例
> SELECT hex(count_min_sketch(col, 0.5d, 0.5d, 1)) FROM VALUES (1), (2), (1) AS tab(col);
0000000100000000000000030000000100000004000000005D8D6AB90000000000000000000000000000000200000000000000010000000000000000
Since 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
Since 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
Since 2.0.0
crc32
crc32(expr) - expr の巡回冗長検査値を bigint として返します。
例
> SELECT crc32('Spark');
1557323817
Since 1.5.0
csc
csc(expr) - expr の余割を返します。1/java.lang.Math.sin によって計算される場合と同様です。
引数
- expr - ラジアン単位の角度。
例
> SELECT csc(1);
1.1883951057781212
Since 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
Since 2.0.0
curdate
curdate() - クエリ実行開始時の現在の日付を返します。同じクエリ内の curdate のすべての呼び出しは同じ値を返します。
例
> SELECT curdate();
2022-09-06
Since 3.4.0
current_catalog
current_catalog() - 現在のカタログを返します。
例
> SELECT current_catalog();
spark_catalog
Since 3.1.0
current_database
current_database() - 現在のデータベースを返します。
例
> SELECT current_database();
default
Since 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 以降でサポートされています。
Since 1.5.0
current_schema
current_schema() - 現在のデータベースを返します。
例
> SELECT current_schema();
default
Since 3.4.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 以降でサポートされています。
Since 1.5.0
current_timezone
current_timezone() - 現在のセッションのローカルタイムゾーンを返します。
例
> SELECT current_timezone();
Asia/Shanghai
Since 3.1.0
current_user
current_user() - 現在の実行コンテキストのユーザー名。
例
> SELECT current_user();
mockingjay
Since 3.2.0
date
date(expr) - 値 expr をターゲットデータ型 date にキャストします。
Since 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
Since 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
Since 3.4.0
date_format
date_format(timestamp, fmt) - timestamp を日付フォーマット fmt で指定された形式の値に変換します。
引数
- timestamp - 指定された形式に変換される日付/タイムスタンプまたは文字列。
- fmt - 有効な日付および時刻フォーマットパターンについては、Datetime Patterns を参照してください。
例
> SELECT date_format('2016-04-08', 'y');
2016
Since 1.5.0
date_from_unix_date
date_from_unix_date(days) - 1970-01-01 からの日数から日付を作成します。
例
> SELECT date_from_unix_date(1);
1970-01-02
Since 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) に相当します。
Since 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
Since 1.5.0
date_trunc
date_trunc(fmt, ts) - フォーマットモデル fmt で指定された単位にタイムスタンプ ts を切り捨てます。
引数
- fmt - 切り捨てる単位を表すフォーマット。
- "YEAR", "YYYY", "YY" -
tsが属する年の最初の日付に切り捨て、時刻部分はゼロにされます。 - "QUARTER" -
tsが属する四半期の最初の日付に切り捨て、時刻部分はゼロにされます。 - "MONTH", "MM", "MON" -
tsが属する月の最初の日付に切り捨て、時刻部分はゼロにされます。 - "WEEK" -
tsが属する週の月曜日に切り捨て、時刻部分はゼロにされます。 - "DAY", "DD" - 時刻部分をゼロにされます。
- "HOUR" - 分と秒(小数点以下)をゼロにされます。
- "MINUTE" - 秒(小数点以下)をゼロにされます。
- "SECOND" - 秒の小数点以下をゼロにされます。
- "MILLISECOND" - マイクロ秒をゼロにされます。
- "MICROSECOND" - すべてが保持されます。
- "YEAR", "YYYY", "YY" -
- ts - 日時値または有効なタイムスタンプ文字列。
例
> 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
Since 2.3.0
dateadd
dateadd(start_date, num_days) - start_date から num_days 後(または前)の日付を返します。
例
> SELECT dateadd('2016-07-30', 1);
2016-07-31
Since 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
Since 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) に相当します。
Since 3.4.0
day
day(date) - 日付/タイムスタンプの月の日を返します。
例
> SELECT day('2009-07-30');
30
Since 1.5.0
dayname
dayname(date) - 指定された日付から 3 文字の省略された曜日名を返します。
例
> SELECT dayname(DATE('2008-02-20'));
Wed
Since 4.0.0
dayofmonth
dayofmonth(date) - 日付/タイムスタンプの月の日を返します。
例
> SELECT dayofmonth('2009-07-30');
30
Since 1.5.0
dayofweek
dayofweek(date) - 日付/タイムスタンプの曜日を返します (1 = 日曜日、2 = 月曜日、...、7 = 土曜日)。
例
> SELECT dayofweek('2009-07-30');
5
Since 2.3.0
dayofyear
dayofyear(date) - 日付/タイムスタンプの年の日を返します。
例
> SELECT dayofyear('2016-04-09');
100
Since 1.5.0
decimal
decimal(expr) - 値 expr をターゲットデータ型 decimal にキャストします。
Since 2.0.1
decode
decode(bin, charset) - 最初の引数を 2 番目の引数で指定された文字セットを使用してデコードします。どちらかの引数が NULL の場合、結果も NULL になります。
decode(expr, search, result [, search, result ] ... [, default]) - expr を各 search 値と順に比較します。expr が search 値と等しい場合、decode は対応する result を返します。一致が見つからない場合、default を返します。default が省略されている場合、NULL を返します。
引数
- bin - デコードするバイナリ式。
- charset -
binを STRING にデコードするための文字セットのいずれか ('US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16', 'UTF-32')。大文字小文字は区別されません。
例
> 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
注意
decode(expr, search, result [, search, result ] ... [, default]) は 3.2.0 以降でサポートされています。
Since 1.5.0
degrees
degrees(expr) - ラジアンを度に変換します。
引数
- expr - ラジアン単位の角度。
例
> SELECT degrees(3.141592653589793);
180.0
Since 1.4.0
dense_rank
dense_rank() - 値のグループ内での値のランクを計算します。結果は、以前に割り当てられたランク値に 1 を加えたものです。rank 関数とは異なり、dense_rank はランクシーケンスにギャップを生成しません。
引数
- children - これはランクの基準となるもので、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
Since 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
Since 3.0.0
double
double(expr) - 値 expr をターゲットデータ型 double にキャストします。
Since 2.0.1
e
e() - オイラー数 e を返します。
例
> SELECT e();
2.718281828459045
Since 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
Since 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
Since 2.0.0
encode
encode(str, charset) - 最初の引数を 2 番目の引数で指定された文字セットを使用してエンコードします。どちらかの引数が NULL の場合、結果も NULL になります。
引数
- str - 文字列式。
- charset -
strを BINARY にエンコードするための文字セットのいずれか ('US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16', 'UTF-32')。大文字小文字は区別されません。
例
> SELECT encode('abc', 'utf-8');
abc
Since 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
Since 3.3.0
equal_null
equal_null(expr1, expr2) - NULL でないオペランドについては EQUAL(=) 演算子と同じ結果を返しますが、両方が NULL の場合は true を返し、片方が NULL の場合は false を返します。
引数
- expr1, expr2 - 2 つの式は同じ型であるか、共通の型にキャスト可能である必要があり、等価比較で使用できる型である必要があります。Map 型はサポートされていません。配列/構造体などの複合型の場合、フィールドのデータ型は順序付け可能である必要があります。
例
> 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
Since 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
Since 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
Since 2.4.0
exp
exp(expr) - e の expr 乗を返します。
例
> SELECT exp(0);
1.0
Since 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
Since 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
Since 1.0.0
expm1
expm1(expr) - exp(expr) - 1 を返します。
例
> SELECT expm1(0);
0.0
Since 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") - 日時が属する年の四半期 (1 - 4)。
- "MONTH", ("MON", "MONS", "MONTHS") - 月フィールド (1 - 12)。
- "WEEK", ("W", "WEEKS") - 日時の ISO 8601 週番号。週は月曜日に始まり、週 1 は 3 日より多い最初の週です。ISO 週番号付けシステムでは、1 月初旬の日付が前年の第 52 週または第 53 週の一部である可能性があり、12 月下旬の日付が翌年の第 1 週の一部である可能性があります。たとえば、2005-01-02 は 2004 年の第 53 週の一部ですが、2012-12-31 は 2013 年の第 1 週の一部です。
- "DAY", ("D", "DAYS") - 月の日フィールド (1 - 31)。
- "DAYOFWEEK",("DOW") - 日付/時刻の曜日。日曜日(1)から土曜日(7)まで。
- "DAYOFWEEK_ISO",("DOW_ISO") - 日付/時刻の 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") - 秒フィールド、小数点以下の部分を含む。
- 間隔 (
months、days、microsecondsで構成される) のfieldのサポートされている文字列値は次のとおりです (大文字小文字を区別しません)。- "YEAR", ("Y", "YEARS", "YR", "YRS") - 合計
months/ 12。 - "MONTH", ("MON", "MONS", "MONTHS") - 合計
months% 12。 - "DAY", ("D", "DAYS") - 間隔の
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) に相当します。
Since 3.0.0
factorial
factorial(expr) - expr の階乗を返します。expr は [0..20] である必要があります。それ以外の場合は NULL を返します。
例
> SELECT factorial(5);
120
Since 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 以降、インデックス引数を使用できます。
Since 2.4.0
find_in_set
find_in_set(str, str_array) - カンマ区切りのリスト (str_array) 内の指定された文字列 (str) のインデックス (1 から始まる) を返します。文字列が見つからない場合、または指定された文字列 (str) にコンマが含まれている場合は 0 を返します。
例
> SELECT find_in_set('ab','abc,b,ab,c,def');
3
Since 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
注意
この関数は決定論的ではありません。なぜなら、その結果はシャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 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
注意
この関数は決定論的ではありません。なぜなら、その結果はシャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 2.0.0
flatten
flatten(arrayOfArrays) - 配列の配列を単一の配列に変換します。
例
> SELECT flatten(array(array(1, 2), array(3, 4)));
[1,2,3,4]
Since 2.4.0
float
float(expr) - 値 expr をターゲットデータ型 float にキャストします。
Since 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
Since 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
Since 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
Since 1.5.0
format_string
format_string(strfmt, obj, ...) - printf スタイルのフォーマット文字列からフォーマットされた文字列を返します。
例
> SELECT format_string("Hello World %d %s", 100, "days");
Hello World 100 days
Since 1.5.0
from_avro
from_avro(child, jsonFormatSchema, options) - バイナリ Avro 値を Catalyst 値に変換します。
例
> SELECT from_avro(s, '{"type": "record", "name": "struct", "fields": [{ "name": "u", "type": ["int","string"] }]}', map()) IS NULL AS result FROM (SELECT NAMED_STRUCT('u', NAMED_STRUCT('member0', member0, 'member1', member1)) AS s FROM VALUES (1, NULL), (NULL, 'a') tab(member0, member1));
[false]
注意
指定されたスキーマは、読み取られるデータの実際のスキーマと一致する必要があります。一致しない場合、動作は未定義です。失敗したり、任意の結果が返されたりする可能性があります。互換性のある進化型スキーマでデータを逆シリアル化するには、対応するオプションを通じて期待される Avro スキーマを設定できます。
Since 4.0.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}
Since 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}]}
Since 2.2.0
from_protobuf
from_protobuf(data, messageName, descFilePath, options) - バイナリ Protobuf 値を Catalyst 値に変換します。
例
> SELECT from_protobuf(s, 'Person', '/path/to/descriptor.desc', map()) IS NULL AS result FROM (SELECT NAMED_STRUCT('name', name, 'id', id) AS s FROM VALUES ('John Doe', 1), (NULL, 2) tab(name, id));
[false]
注意
指定された Protobuf スキーマは、読み取られるデータの実際のスキーマと一致する必要があります。一致しない場合、動作は未定義です。失敗したり、任意の結果が返されたりする可能性があります。互換性のある進化型スキーマでデータを逆シリアル化するには、対応するオプションを通じて期待される Protobuf スキーマを設定できます。
Since 4.0.0
from_unixtime
from_unixtime(unix_time[, fmt]) - unix_time を指定された fmt で返します。
引数
- 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
Since 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
Since 1.5.0
from_xml
from_xml(xmlStr, schema[, options]) - 指定された xmlStr と schema を持つ構造体値を返します。
例
> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
> SELECT from_xml('<p><time>26/08/2015</time></p>', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"time":2015-08-26 00:00:00}
> SELECT from_xml('<p><teacher>Alice</teacher><student><name>Bob</name><rank>1</rank></student><student><name>Charlie</name><rank>2</rank></student></p>', 'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
{"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}
Since 4.0.0
get
get(array, index) - 指定された (0 から始まる) インデックスの配列要素を返します。インデックスが配列の境界外を指す場合、この関数は 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
Since 3.4.0
get_json_object
get_json_object(json_txt, path) - path から JSON オブジェクトを抽出します。
例
> SELECT get_json_object('{"a":"b"}', '$.a');
b
Since 1.5.0
getbit
getbit(expr, pos) - 指定された位置にあるビットの値 (0 または 1) を返します。位置は右から左へ 0 から数えられます。位置引数は負にできません。
例
> SELECT getbit(11, 0);
1
> SELECT getbit(11, 2);
0
Since 3.2.0
greatest
greatest(expr, ...) - NULL 値をスキップして、すべてのパラメータの中で最も大きい値を返します。
例
> SELECT greatest(10, 9, 2, 4, 3);
10
Since 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
Since 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
注意
入力列は、グルーピング列と正確に一致するか、空である必要があります (すべてのグルーピング列を意味します)。
Since 2.0.0
hash
hash(expr1, expr2, ...) - 引数のハッシュ値を返します。
例
> SELECT hash('Spark', array(123), 2);
-1321691492
Since 2.0.0
hex
hex(expr) - expr を 16 進数に変換します。
例
> SELECT hex(17);
11
> SELECT hex('Spark SQL');
537061726B2053514C
Since 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}]
Since 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
Since 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
Since 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
Since 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
Since 3.5.0
hour
hour(timestamp) - 文字列/タイムスタンプの時成分を返します。
例
> SELECT hour('2009-07-30 12:58:59');
12
Since 1.5.0
hypot
hypot(expr1, expr2) - sqrt(expr1**2 + expr2**2) を返します。
例
> SELECT hypot(3, 4);
5.0
Since 1.4.0
if
if(expr1, expr2, expr3) - expr1 が true に評価された場合、expr2 を返します。それ以外の場合、expr3 を返します。
例
> SELECT if(1 < 2, 'a', 'b');
a
Since 1.0.0
ifnull
ifnull(expr1, expr2) - expr1 が NULL の場合は expr2 を返します。それ以外の場合は expr1 を返します。
例
> SELECT ifnull(NULL, array('2'));
["2"]
Since 2.0.0
ilike
str ilike pattern[ ESCAPE escape] - str が escape を使用して pattern に大文字小文字を区別せずに一致する場合 true を返します。いずれかの引数が NULL の場合は NULL を返します。それ以外の場合は false を返します。
引数
- str - 文字列式。
- pattern - 文字列式。パターンは文字通り一致する文字列であり、次の特殊記号を除く。
_ は入力内の任意の 1 文字に一致します (POSIX 正規表現の . に似ています)。
% は入力内の 0 個以上の文字に一致します (POSIX 正規表現の .* に似ています)。
Spark 2.0 以降、文字列リテラルは SQL パーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literal を参照してください。たとえば、"\abc" に一致させるには、パターンは "\abc" である必要があります。
SQL 設定 'spark.sql.parser.escapedStringLiterals' が有効になっている場合、Spark 1.6 の文字列リテラル解析の動作に戻ります。たとえば、設定が有効になっている場合、"\abc" に一致させるパターンは "\abc" である必要があります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。 - escape - Spark 3.0 以降で追加された文字。デフォルトのエスケープ文字は '\' です。エスケープ文字が特殊記号または別のエスケープ文字の前に置かれた場合、それに続く文字は文字通り一致します。他の文字をエスケープすることは無効です。
例
> SELECT ilike('Spark', '_Park');
true
> SELECT '\\abc' AS S, S ilike r'\\abc', S ilike '\\\\abc';
\abc true 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 r'%SystemDrive%\\Users%';
true
> SELECT '%SystemDrive%/Users/John' ilike '/%SYSTEMDrive/%//Users%' ESCAPE '/';
true
注意
標準正規表現との一致には RLIKE を使用してください。
Since 3.3.0
in
expr1 in(expr2, expr3, ...) - expr が any 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
Since 1.0.0
initcap
initcap(str) - 各単語の最初の文字を大文字にした str を返します。他のすべての文字は小文字になります。単語は空白文字で区切られます。
例
> SELECT initcap('sPark sql');
Spark Sql
Since 1.5.0
inline
inline(expr) - 構造体の配列をテーブルに展開します。特に指定がない限り、デフォルトで col1、col2 などの列名を使用します。
例
> SELECT * FROM inline(array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
> SELECT * FROM inline(input => array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
Since 3.4.0
inline_outer
inline_outer(expr) - 構造体の配列をテーブルに展開します。特に指定がない限り、デフォルトで col1、col2 などの列名を使用します。
例
> SELECT * FROM inline_outer(array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
> SELECT * FROM inline_outer(input => array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
Since 3.4.0
input_file_block_length
input_file_block_length() - 読み取られているブロックの長さを返します。利用できない場合は -1 を返します。
例
> SELECT input_file_block_length();
-1
Since 2.2.0
input_file_block_start
input_file_block_start() - 読み取られているブロックの開始オフセットを返します。利用できない場合は -1 を返します。
例
> SELECT input_file_block_start();
-1
Since 2.2.0
input_file_name
input_file_name() - 読み取られているファイルの名前を返します。利用できない場合は空文字列を返します。
例
> SELECT input_file_name();
Since 1.5.0
instr
instr(str, substr) - str 内の substr の最初の出現位置 (1 から始まる) を返します。
例
> SELECT instr('SparkSQL', 'SQL');
6
Since 1.5.0
int
int(expr) - 値 expr をターゲットデータ型 int にキャストします。
Since 2.0.1
is_valid_utf8
is_valid_utf8(str) - str が有効な UTF-8 文字列の場合 true を返します。それ以外の場合は false を返します。
引数
- str - 文字列式。
例
> SELECT is_valid_utf8('Spark');
true
> SELECT is_valid_utf8(x'61');
true
> SELECT is_valid_utf8(x'80');
false
> SELECT is_valid_utf8(x'61C262');
false
Since 4.0.0
is_variant_null
is_variant_null(expr) - バリアント値がバリアント NULL かどうかを確認します。入力がバリアント NULL の場合にのみ true を返し、それ以外の場合 (SQL NULL を含む) は false を返します。
例
> SELECT is_variant_null(parse_json('null'));
true
> SELECT is_variant_null(parse_json('"null"'));
false
> SELECT is_variant_null(parse_json('13'));
false
> SELECT is_variant_null(parse_json(null));
false
> SELECT is_variant_null(variant_get(parse_json('{"a":null, "b":"spark"}'), "$.c"));
false
> SELECT is_variant_null(variant_get(parse_json('{"a":null, "b":"spark"}'), "$.a"));
true
Since 4.0.0
isnan
isnan(expr) - expr が NaN の場合に true を返します。それ以外の場合は false を返します。
例
> SELECT isnan(cast('NaN' as double));
true
Since 1.5.0
isnotnull
isnotnull(expr) - expr が NULL でない場合に true を返します。それ以外の場合は false を返します。
例
> SELECT isnotnull(1);
true
Since 1.0.0
isnull
isnull(expr) - expr が NULL の場合に true を返します。それ以外の場合は false を返します。
例
> SELECT isnull(1);
false
Since 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
Since 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
Since 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"]
Since 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
Since 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
Since 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
Since 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
注意
この関数は決定論的ではありません。なぜなら、その結果はシャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 2.0.0
last_day
last_day(date) - 日付が属する月の最終日を返します。
例
> SELECT last_day('2009-01-12');
2009-01-31
Since 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
注意
この関数は決定論的ではありません。なぜなら、その結果はシャッフル後に決定論的でなくなる可能性のある行の順序に依存するためです。
Since 2.0.0
lcase
lcase(str) - すべての文字を小文字に変更した str を返します。
例
> SELECT lcase('SparkSql');
sparksql
Since 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
Since 2.0.0
least
least(expr, ...) - NULL 値をスキップして、すべてのパラメータの中で最も小さい値を返します。
例
> SELECT least(10, 9, 2, 4, 3);
2
Since 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
Since 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
Since 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
Since 1.5.0
levenshtein
levenshtein(str1, str2[, threshold]) - 指定された 2 つの文字列間のレーベンシュタイン距離を返します。threshold が設定されており、距離がそれより大きい場合、-1 を返します。
例
> SELECT levenshtein('kitten', 'sitting');
3
> SELECT levenshtein('kitten', 'sitting', 2);
-1
Since 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 パーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literal を参照してください。たとえば、"\abc" に一致させるには、パターンは "\abc" である必要があります。
SQL 設定 'spark.sql.parser.escapedStringLiterals' が有効になっている場合、Spark 1.6 の文字列リテラル解析の動作に戻ります。たとえば、設定が有効になっている場合、"\abc" に一致させるパターンは "\abc" である必要があります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。 - escape - Spark 3.0 以降で追加された文字。デフォルトのエスケープ文字は '\' です。エスケープ文字が特殊記号または別のエスケープ文字の前に置かれた場合、それに続く文字は文字通り一致します。他の文字をエスケープすることは無効です。
例
> SELECT like('Spark', '_park');
true
> SELECT '\\abc' AS S, S like r'\\abc', S like '\\\\abc';
\abc true 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 r'%SystemDrive%\\Users%';
true
> SELECT '%SystemDrive%/Users/John' like '/%SystemDrive/%//Users%' ESCAPE '/';
true
注意
標準正規表現との一致には RLIKE を使用してください。
Since 1.0.0
listagg
listagg(expr[, delimiter])[ WITHIN GROUP (ORDER BY key [ASC | DESC] [,...])] - 区切り文字で区切られた NULL でない入力値の連結を返します。キーで順序付けされます。すべての値が NULL の場合、NULL が返されます。
引数
- expr - 連結される文字列またはバイナリ式。
- delimiter - 入力値を区切るために使用されるオプションの文字列またはバイナリ折りたたみ可能式。NULL の場合、区切り文字なしで連結が実行されます。デフォルトは NULL です。
- key - 入力値を順序付けするためのオプションの式。複数のキーを指定できます。指定しない場合、結果の行の順序は決定論的ではありません。
例
> SELECT listagg(col) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
abc
> SELECT listagg(col) WITHIN GROUP (ORDER BY col DESC) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
cba
> SELECT listagg(col) FROM VALUES ('a'), (NULL), ('b') AS tab(col);
ab
> SELECT listagg(col) FROM VALUES ('a'), ('a') AS tab(col);
aa
> SELECT listagg(DISTINCT col) FROM VALUES ('a'), ('a'), ('b') AS tab(col);
ab
> SELECT listagg(col, ', ') FROM VALUES ('a'), ('b'), ('c') AS tab(col);
a, b, c
> SELECT listagg(col) FROM VALUES (NULL), (NULL) AS tab(col);
NULL
注意
- 順序が指定されていない場合、シャッフル後に行の順序が決定論的でなくなる可能性があるため、関数は決定論的ではありません。
- DISTINCT が指定されている場合、expr と key は同じ式である必要があります。
Since 4.0.0
ln
ln(expr) - expr の自然対数 (底 e) を返します。
例
> SELECT ln(1);
0.0
Since 1.4.0
localtimestamp
localtimestamp() - クエリ実行開始時の現在のローカルタイムスタンプ (タイムゾーンなし) を返します。同じクエリ内の localtimestamp のすべての呼び出しは同じ値を返します。
localtimestamp - セッションタイムゾーンの現在のローカル日時をクエリ実行開始時に返します。
例
> SELECT localtimestamp();
2020-04-25 15:49:11.914
Since 3.4.0
locate
locate(substr, str[, pos]) - 指定された pos 以降の str 内の substr の最初の出現位置を返します。指定された pos と返り値は 1 から始まります。
例
> SELECT locate('bar', 'foobarbar');
4
> SELECT locate('bar', 'foobarbar', 5);
7
> SELECT POSITION('bar' IN 'foobarbar');
4
Since 1.5.0
log
log(base, expr) - base を底とする expr の対数を返します。
例
> SELECT log(10, 100);
2.0
Since 1.5.0
log10
log10(expr) - 底 10 の expr の対数を返します。
例
> SELECT log10(10);
1.0
Since 1.4.0
log1p
log1p(expr) - log(1 + expr) を返します。
例
> SELECT log1p(0);
0.0
Since 1.4.0
log2
log2(expr) - 底 2 の expr の対数を返します。
例
> SELECT log2(2);
1.0
Since 1.4.0
lower
lower(str) - すべての文字を小文字に変更した str を返します。
例
> SELECT lower('SparkSql');
sparksql
Since 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
Since 1.5.0
ltrim
ltrim(str) - str から先頭のスペース文字を削除します。
引数
- str - 文字列式。
- trimStr - トリミングするトリム文字列の文字。デフォルト値はスペース 1 文字です。
例
> SELECT ltrim(' SparkSQL ');
SparkSQL
Since 1.5.0
luhn_check
luhn_check(str ) - 数字の文字列が Luhn アルゴリズムに従って有効かどうかを確認します。このチェックサム関数は、無効な番号や誤って入力された番号を区別するために、クレジットカード番号や政府発行の識別番号に広く適用されています。
例
> SELECT luhn_check('8112189876');
true
> SELECT luhn_check('79927398713');
true
> SELECT luhn_check('79927398714');
false
Since 3.5.0
make_date
make_date(year, month, day) - 年、月、日のフィールドから日付を作成します。spark.sql.ansi.enabled 設定が false の場合、関数は無効な入力に対して NULL を返します。それ以外の場合、エラーをスローします。
引数
- year - 表現する年 (1 から 9999)。
- month - 表現する月 (1 月から 12 月)。
- day - 表現する日 (1 から 31)。
例
> SELECT make_date(2013, 7, 15);
2013-07-15
> SELECT make_date(2019, 7, NULL);
NULL
Since 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
Since 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
Since 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 月から 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
Since 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 月から 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
Since 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 月から 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
Since 3.4.0
make_valid_utf8
make_valid_utf8(str) - str が有効な UTF-8 文字列の場合、元の文字列を返します。それ以外の場合、無効な UTF-8 バイトシーケンスが UNICODE 置換文字 U+FFFD を使用して置き換えられた新しい文字列を返します。
引数
- str - 文字列式。
例
> SELECT make_valid_utf8('Spark');
Spark
> SELECT make_valid_utf8(x'61');
a
> SELECT make_valid_utf8(x'80');
�
> SELECT make_valid_utf8(x'61C262');
a�b
Since 4.0.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
Since 3.2.0
map
map(key0, value0, key1, value1, ...) - 指定されたキー/値ペアでマップを作成します。
例
> SELECT map(1.0, '2', 3.0, '4');
{1.0:"2",3.0:"4"}
Since 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"}
Since 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
Since 3.3.0
map_entries
map_entries(map) - 指定されたマップ内のすべてのエントリの順序付けられていない配列を返します。
例
> SELECT map_entries(map(1, 'a', 2, 'b'));
[{"key":1,"value":"a"},{"key":2,"value":"b"}]
Since 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}
Since 3.0.0
map_from_arrays
map_from_arrays(keys, values) - 指定されたキー/値配列のペアでマップを作成します。keys のすべての要素は NULL であってはなりません。
例
> SELECT map_from_arrays(array(1.0, 3.0), array('2', '4'));
{1.0:"2",3.0:"4"}
Since 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"}
Since 2.4.0
map_keys
map_keys(map) - マップのキーを含む順序付けられていない配列を返します。
例
> SELECT map_keys(map(1, 'a', 2, 'b'));
[1,2]
Since 2.0.0
map_values
map_values(map) - マップの値を含む順序付けられていない配列を返します。
例
> SELECT map_values(map(1, 'a', 2, 'b'));
["a","b"]
Since 2.0.0
map_zip_with
map_zip_with(map1, map2, function) - 同じキーを持つ値のペアに関数を適用して、2 つの指定されたマップを 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}
Since 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-@$#
Since 3.4.0
max
max(expr) - expr の最大値を返します。
例
> SELECT max(col) FROM VALUES (10), (50), (20) AS tab(col);
50
Since 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
注意
この関数は決定論的ではないため、同じ x の値に関連付けられた出力順序は異なる場合があります。
Since 3.0.0
md5
md5(expr) - expr の MD5 128 ビットチェックサムを 16 進数文字列として返します。
例
> SELECT md5('Spark');
8cde774d6f7333752ed72cacddb05126
Since 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
Since 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
Since 3.4.0
min
min(expr) - expr の最小値を返します。
例
> SELECT min(col) FROM VALUES (10), (-1), (20) AS tab(col);
-1
Since 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
注意
この関数は決定論的ではないため、同じ x の値に関連付けられた出力順序は異なる場合があります。
Since 3.0.0
minute
minute(timestamp) - 文字列/タイムスタンプの分成分を返します。
例
> SELECT minute('2009-07-30 12:58:59');
58
Since 1.5.0
mod
expr1 % expr2、または mod(expr1, expr2) - expr1 / expr2 の余りを返します。
例
> SELECT 2 % 1.8;
0.2
> SELECT MOD(2, 1.8);
0.2
Since 2.3.0
mode
mode(col[, deterministic]) - col 内の値の中で最も頻繁に出現する値を返します。NULL 値は無視されます。すべての値が NULL であるか、行が 0 件の場合、NULL を返します。複数の値が同じ最大頻度を持つ場合、deterministic が false または未定義の場合はいずれかの値が返され、deterministic が true の場合は最も低い値が返されます。mode() WITHIN GROUP (ORDER BY col) - col (ORDER BY 句で指定) 内の値の中で最も頻繁に出現する値を返します。NULL 値は無視されます。すべての値が NULL であるか、行が 0 件の場合、NULL を返します。複数の値が同じ最大頻度を持つ場合、1 つの値のみが返されます。値はソート順に基づいて選択されます。同じ頻度を持つ複数の値から、ソート順が asc の場合は最小値、ソート順が desc の場合は最大値が返されます。
例
> 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
> SELECT mode(col, false) FROM VALUES (-10), (0), (10) AS tab(col);
0
> SELECT mode(col, true) FROM VALUES (-10), (0), (10) AS tab(col);
-10
> SELECT mode() WITHIN GROUP (ORDER BY col) FROM VALUES (0), (10), (10) AS tab(col);
10
> SELECT mode() WITHIN GROUP (ORDER BY col) FROM VALUES (0), (10), (10), (20), (20) AS tab(col);
10
> SELECT mode() WITHIN GROUP (ORDER BY col DESC) FROM VALUES (0), (10), (10), (20), (20) AS tab(col);
20
Since 3.4.0
monotonically_increasing_id
monotonically_increasing_id() - 単調増加する 64 ビット整数を返します。生成される ID は単調増加し、一意であることが保証されますが、連続的ではありません。現在の実装では、パーティション ID が上位 31 ビットに、下位 33 ビットが各パーティション内のレコード番号を表します。データフレームが 10 億未満のパーティションを持ち、各パーティションが 80 億未満のレコードを持つことを前提としています。この関数は、その結果がパーティション ID に依存するため、決定論的ではありません。
例
> SELECT monotonically_increasing_id();
0
Since 1.4.0
month
month(date) - 日付/タイムスタンプの月成分を返します。
例
> SELECT month('2016-07-30');
7
Since 1.5.0
monthname
monthname(date) - 指定された日付から 3 文字の省略された月名を返します。
例
> SELECT monthname('2008-02-20');
Feb
Since 4.0.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
Since 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}
Since 1.5.0
nanvl
nanvl(expr1, expr2) - expr1 が NaN でない場合は expr1 を返します。それ以外の場合は expr2 を返します。
例
> SELECT nanvl(cast('NaN' as double), 123);
123.0
Since 1.5.0
negative
negative(expr) - expr の否定値を返します。
例
> SELECT negative(1);
-1
Since 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 に設定されている場合、関数は SparkIllegalArgumentException をスローし、それ以外の場合は NULL を返します。
例
> SELECT next_day('2015-01-14', 'TU');
2015-01-20
Since 1.5.0
not
not expr - 論理否定。
例
> SELECT not true;
false
> SELECT not false;
true
> SELECT not NULL;
NULL
Since 1.0.0
now
now() - クエリ実行開始時の現在のタイムスタンプを返します。
例
> SELECT now();
2020-04-25 15:49:11.914
Since 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
Since 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
Since 2.0.0
nullif
nullif(expr1, expr2) - expr1 が expr2 と等しい場合 NULL を返します。それ以外の場合は expr1 を返します。
例
> SELECT nullif(2, 2);
NULL
Since 2.0.0
nullifzero
nullifzero(expr) - expr がゼロと等しい場合 NULL を返します。それ以外の場合は expr を返します。
例
> SELECT nullifzero(0);
NULL
> SELECT nullifzero(2);
2
Since 4.0.0
nvl
nvl(expr1, expr2) - expr1 が NULL の場合は expr2 を返します。それ以外の場合は expr1 を返します。
例
> SELECT nvl(NULL, array('2'));
["2"]
Since 2.0.0
nvl2
nvl2(expr1, expr2, expr3) - expr1 が NULL でない場合は expr2 を返します。それ以外の場合は expr3 を返します。
例
> SELECT nvl2(NULL, 2, 1);
1
Since 2.0.0
octet_length
octet_length(expr) - 文字列データのバイト長、またはバイナリデータのバイト数を返します。
例
> SELECT octet_length('Spark SQL');
9
> SELECT octet_length(x'537061726b2053514c');
9
Since 2.3.0
または
expr1 or expr2 - 論理 OR。
例
> SELECT true or false;
true
> SELECT false or false;
false
> SELECT true or NULL;
true
> SELECT false or NULL;
NULL
Since 1.0.0
overlay
overlay(input, replace, pos[, len]) - pos から始まり len の長さの replace で input を置き換えます。
例
> 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
Since 3.0.0
parse_json
parse_json(jsonStr) - JSON 文字列を Variant 値として解析します。文字列が無効な JSON 値の場合、例外をスローします。
例
> SELECT parse_json('{"a":1,"b":0.8}');
{"a":1,"b":0.8}
Since 4.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
Since 2.0.0
percent_rank
percent_rank() - 値のグループ内でのパーセンタイルランクを計算します。
引数
- children - これはランクの基準となるもので、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
Since 2.0.0
percentile
percentile(col, percentage [, frequency]) - 指定されたパーセンテージでの数値または ANSI 間隔列 col の正確なパーセンタイル値を返します。percentage の値は 0.0 から 1.0 の間である必要があります。frequency の値は正の整数である必要があります。
percentile(col, array(percentage1 [, percentage2]...) [, frequency]) - 指定されたパーセンテージでの数値列 col の正確なパーセンタイル値配列を返します。percentage 配列の各値は 0.0 から 1.0 の間である必要があります。frequency の値は正の整数である必要があります。
例
> 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]
Since 2.1.0
percentile_approx
percentile_approx(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 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]
Since 2.1.0
percentile_cont
percentile_cont(percentage) WITHIN GROUP (ORDER BY col) - 指定されたpercentage(ORDER BY句で指定)における数値またはANSIインターバル列colの連続分布に基づいたパーセンタイル値を返します。
例
> SELECT percentile_cont(0.25) WITHIN GROUP (ORDER BY col) FROM VALUES (0), (10) AS tab(col);
2.5
> SELECT percentile_cont(0.25) WITHIN GROUP (ORDER BY col) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-2
Since 4.0.0
percentile_disc
percentile_disc(percentage) WITHIN GROUP (ORDER BY col) - 指定されたpercentage(ORDER BY句で指定)における数値またはANSIインターバル列colの離散分布に基づいたパーセンタイル値を返します。
例
> SELECT percentile_disc(0.25) WITHIN GROUP (ORDER BY col) FROM VALUES (0), (10) AS tab(col);
0.0
> SELECT percentile_disc(0.25) WITHIN GROUP (ORDER BY col) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-0
Since 4.0.0
pi
pi() - 円周率πを返します。
例
> SELECT pi();
3.141592653589793
Since 1.5.0
pmod
pmod(expr1, expr2) - expr1 mod expr2の正の値を返します。
例
> SELECT pmod(10, 3);
1
> SELECT pmod(-10, 3);
2
Since 1.5.0
posexplode
posexplode(expr) - 配列exprの要素を位置情報を持つ複数の行に分割します。または、マップexprの要素を位置情報を持つ複数の行と列に分割します。特に指定がない限り、位置には列名pos、配列の要素にはcol、マップの要素にはkeyとvalueを使用します。
例
> SELECT * FROM posexplode(array(10,20));
0 10
1 20
> SELECT * FROM posexplode(collection => array(10,20));
0 10
1 20
Since 3.5.0
posexplode_outer
posexplode_outer(expr) - 配列exprの要素を位置情報を持つ複数の行に分割します。または、マップexprの要素を位置情報を持つ複数の行と列に分割します。特に指定がない限り、位置には列名pos、配列の要素にはcol、マップの要素にはkeyとvalueを使用します。
例
> SELECT posexplode_outer(array(10,20));
0 10
1 20
> SELECT posexplode_outer(collection => array(10,20));
0 10
1 20
Since 2.0.0
position
position(substr, str[, pos]) - 文字列str内で、位置pos以降のsubstrの最初の出現位置を返します。指定されたposおよび戻り値は1から始まります。
例
> SELECT position('bar', 'foobarbar');
4
> SELECT position('bar', 'foobarbar', 5);
7
> SELECT POSITION('bar' IN 'foobarbar');
4
Since 2.3.0
positive
positive(expr) - exprの値を返します。
例
> SELECT positive(1);
1
Since 1.5.0
pow
pow(expr1, expr2) - expr1をexpr2乗した値を返します。
例
> SELECT pow(2, 3);
8.0
Since 1.4.0
power
power(expr1, expr2) - expr1をexpr2乗した値を返します。
例
> SELECT power(2, 3);
8.0
Since 1.4.0
printf
printf(strfmt, obj, ...) - printfスタイルのフォーマット文字列からフォーマットされた文字列を返します。
例
> SELECT printf("Hello World %d %s", 100, "days");
Hello World 100 days
Since 1.5.0
quarter
quarter(date) - 日付dateの年の四半期(1から4の範囲)を返します。
例
> SELECT quarter('2016-08-31');
3
Since 1.5.0
radians
radians(expr) - 度をラジアンに変換します。
引数
- expr - 角度(度)
例
> SELECT radians(180);
3.141592653589793
Since 1.4.0
raise_error
raise_error( expr ) - exprをメッセージとしてUSER_RAISED_EXCEPTIONをスローします。
例
> SELECT raise_error('custom error message');
[USER_RAISED_EXCEPTION] custom error message
Since 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
注意
The function is non-deterministic in general case. - 一般的に、この関数は非決定論的です。
Since 1.5.0
randn
randn([seed]) - 独立同分布(i.i.d.)の標準正規分布に従うランダムな値を返します。
例
> SELECT randn();
-0.3254147983080288
> SELECT randn(0);
1.6034991609278433
> SELECT randn(null);
1.6034991609278433
注意
The function is non-deterministic in general case. - 一般的に、この関数は非決定論的です。
Since 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
注意
The function is non-deterministic in general case. - 一般的に、この関数は非決定論的です。
Since 3.0.0
randstr
randstr(length[, seed]) - 指定された長さの文字列を返します。この文字列は、0-9、a-z、A-Zの文字プールから一様にランダムに選択された文字で構成されます。ランダムシードはオプションです。文字列の長さは、固定の2バイトまたは4バイト整数(それぞれSMALLINTまたはINT)である必要があります。
例
> SELECT randstr(3, 0) AS result;
ceV
Since 4.0.0
range
range(start[, end[, step[, numSlices]]]) / range(end) - 指定された範囲内の値のテーブルを返します。
引数
- start - 0にデフォルトされるオプションのBIGINTリテラルで、生成される最初の値をマークします。
- end - 数値生成の終了点(排他的)をマークするBIGINTリテラルです。
- step - 値を生成する際のインクリメントを指定するオプションのBIGINTリテラルで、デフォルトは1です。
- numParts - 行の生成がパーティションにどのように分散されるかを指定するオプションのINTEGERリテラルです。
例
> SELECT * FROM range(1);
+---+
| id|
+---+
| 0|
+---+
> SELECT * FROM range(0, 2);
+---+
|id |
+---+
|0 |
|1 |
+---+
> SELECT * FROM range(0, 4, 2);
+---+
|id |
+---+
|0 |
|2 |
+---+
Since 2.0.0
rank
rank() - 値のグループ内でのランクを計算します。結果は、パーティションの順序付けにおいて、現在の行より前または同じ行の数に1を加えたものです。値はシーケンスにギャップを生じさせます。
引数
- children - これはランクの基準となるもので、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
Since 2.0.0
reduce
reduce(expr, start, merge, 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
Since 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
Since 2.0.0
regexp
regexp(str, regexp) - strがregexpに一致する場合はtrueを返し、一致しない場合はfalseを返します。
引数
- str - 文字列式。
-
regexp - 文字列式。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression for
regexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, the
regexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。
例
> 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
> SELECT regexp('%SystemDrive%\\Users\\John', r'%SystemDrive%\\Users.*');
true
注意
Use LIKE to match with simple string pattern. - 単純な文字列パターンとの一致にはLIKEを使用してください。
Since 3.2.0
regexp_count
regexp_count(str, regexp) - 文字列str内で正規表現パターンregexpが一致する回数を返します。
引数
- 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
Since 3.4.0
regexp_extract
regexp_extract(str, regexp[, idx]) - 文字列str内でregexp式に一致し、正規表現グループインデックスに対応する最初の文字列を抽出します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression forregexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。
There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, theregexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。 - idx - グループインデックスを表す整数式。正規表現は複数のグループを含む場合があります。
idxは抽出する正規表現グループを指定します。グループインデックスは非負である必要があります。idxの最小値は0で、正規表現全体に一致することを意味します。idxが指定されない場合、デフォルトのグループインデックス値は1です。idxパラメータはJavaの正規表現Matcherのgroup()メソッドのインデックスです。
例
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', r'(\d+)-(\d+)', 1);
100
Since 1.5.0
regexp_extract_all
regexp_extract_all(str, regexp[, idx]) - 文字列str内でregexp式に一致し、正規表現グループインデックスに対応するすべての文字列を抽出します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression forregexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。
There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, theregexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。 - idx - グループインデックスを表す整数式。正規表現は複数のグループを含む場合があります。
idxは抽出する正規表現グループを指定します。グループインデックスは非負である必要があります。idxの最小値は0で、正規表現全体に一致することを意味します。idxが指定されない場合、デフォルトのグループインデックス値は1です。idxパラメータはJavaの正規表現Matcherのgroup()メソッドのインデックスです。
例
> SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)', 1);
["100","300"]
> SELECT regexp_extract_all('100-200, 300-400', r'(\d+)-(\d+)', 1);
["100","300"]
Since 3.1.0
regexp_instr
regexp_instr(str, regexp) - 文字列内で正規表現を検索し、一致した部分文字列の開始位置を示す整数を返します。位置は0ではなく1から始まります。一致が見つからない場合は0を返します。
引数
- str - 文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression forregexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。
There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, theregexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。
例
> SELECT regexp_instr(r"\abc", r"^\\abc$");
1
> SELECT regexp_instr('user@spark.apache.org', '@[^.]*');
5
Since 3.4.0
regexp_like
regexp_like(str, regexp) - strがregexpに一致する場合はtrueを返し、一致しない場合はfalseを返します。
引数
- str - 文字列式。
-
regexp - 文字列式。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression for
regexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, the
regexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。
例
> 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
> SELECT regexp_like('%SystemDrive%\\Users\\John', r'%SystemDrive%\\Users.*');
true
注意
Use LIKE to match with simple string pattern. - 単純な文字列パターンとの一致にはLIKEを使用してください。
Since 3.2.0
regexp_replace
regexp_replace(str, regexp, rep[, position]) - str内のregexpに一致するすべての部分文字列をrepに置き換えます。
引数
- str - 正規表現パターンの一致を検索する文字列式。
- regexp - 正規表現を表す文字列。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression forregexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。
There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, theregexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。 - rep - 一致した部分文字列を置き換える文字列式。
- position - 検索を開始する
str内の位置を示す正の整数リテラルです。デフォルトは1です。positionがstrの文字数より大きい場合、結果はstrになります。
例
> SELECT regexp_replace('100-200', '(\\d+)', 'num');
num-num
> SELECT regexp_replace('100-200', r'(\d+)', 'num');
num-num
Since 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
Since 3.4.0
regr_avgx
regr_avgx(y, x) - グループ内の非nullペアの独立変数(x)の平均を返します。ここで、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
Since 3.3.0
regr_avgy
regr_avgy(y, x) - グループ内の非nullペアの従属変数(y)の平均を返します。ここで、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
Since 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, null) AS tab(y, x);
0
> SELECT regr_count(y, x) FROM VALUES (null, 1) AS tab(y, x);
0
> 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
Since 3.3.0
regr_intercept
regr_intercept(y, x) - グループ内の非nullペアの単回帰直線(y = ax + b)の切片を返します。ここで、yは従属変数、xは独立変数です。
例
> SELECT regr_intercept(y, x) FROM VALUES (1, 1), (2, 2), (3, 3), (4, 4) 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
> SELECT regr_intercept(y, x) FROM VALUES (1, 1), (2, null), (3, 3), (4, 4) AS tab(y, x);
0.0
> SELECT regr_intercept(y, x) FROM VALUES (1, 1), (2, null), (null, 3), (4, 4) AS tab(y, x);
0.0
Since 3.4.0
regr_r2
regr_r2(y, x) - グループ内の非nullペアの決定係数(R二乗値)を返します。ここで、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
Since 3.3.0
regr_slope
regr_slope(y, x) - グループ内の非nullペアの単回帰直線(y = ax + b)の傾きを返します。ここで、yは従属変数、xは独立変数です。
例
> SELECT regr_slope(y, x) FROM VALUES (1, 1), (2, 2), (3, 3), (4, 4) 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
> SELECT regr_slope(y, x) FROM VALUES (1, 1), (2, null), (3, 3), (4, 4) AS tab(y, x);
1.0
> SELECT regr_slope(y, x) FROM VALUES (1, 1), (2, null), (null, 3), (4, 4) AS tab(y, x);
1.0
Since 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, null) AS tab(y, x);
NULL
> SELECT regr_sxx(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
> 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
Since 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, null) AS tab(y, x);
NULL
> SELECT regr_sxy(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
> 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
Since 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, null) AS tab(y, x);
NULL
> SELECT regr_syy(y, x) FROM VALUES (null, 1) AS tab(y, x);
NULL
> 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
Since 3.4.0
repeat
repeat(str, n) - 指定された文字列値をn回繰り返した文字列を返します。
例
> SELECT repeat('123', 2);
123123
Since 1.5.0
replace
replace(str, search[, replace]) - searchのすべての出現箇所をreplaceに置き換えます。
引数
- str - 文字列式。
- search - 文字列式。
searchがstrで見つからない場合、strは変更されずに返されます。 - replace - 文字列式。
replaceが指定されていないか空文字列の場合、strから削除された文字列は何も置き換えません。
例
> SELECT replace('ABCabc', 'abc', 'DEF');
ABCDEF
Since 2.3.0
reverse
reverse(array) - 文字列を逆順にするか、要素が逆順になった配列を返します。
例
> SELECT reverse('Spark SQL');
LQS krapS
> SELECT reverse(array(2, 1, 4, 3));
[3,4,1,2]
注意
Reverse logic for arrays is available since 2.4.0. - 配列の逆順ロジックは2.4.0以降で利用可能です。
Since 1.5.0
right
right(str, len) - 文字列strの右端からlen文字(lenは文字列型も可)を返します。lenが0以下の場合、結果は空文字列になります。
例
> SELECT right('Spark SQL', 3);
SQL
Since 2.3.0
rint
rint(expr) - 引数に最も近い値で、数学的な整数と等しいdouble値を返します。
例
> SELECT rint(12.3456);
12.0
Since 1.4.0
rlike
rlike(str, regexp) - strがregexpに一致する場合はtrueを返し、一致しない場合はfalseを返します。
引数
- str - 文字列式。
-
regexp - 文字列式。正規表現文字列はJavaの正規表現である必要があります。
Since Spark 2.0, string literals (including regex patterns) are unescaped in our SQL parser, see the unescaping rules at String Literal. For example, to match "\abc", a regular expression for
regexpcan be "^\abc$". - Spark 2.0以降、文字列リテラル(正規表現パターンを含む)はSQLパーサーでエスケープ解除されます。エスケープ解除ルールについては、String Literalを参照してください。たとえば、"\abc"に一致させる場合、regexpの正規表現は「^\abc$」とすることができます。There is a SQL config 'spark.sql.parser.escapedStringLiterals' that can be used to fallback to the Spark 1.6 behavior regarding string literal parsing. For example, if the config is enabled, the
regexpthat can match "\abc" is "^\abc$". - 文字列リテラルの解析に関してSpark 1.6の動作に戻すことができるSQL設定「spark.sql.parser.escapedStringLiterals」があります。たとえば、この設定が有効になっている場合、"\abc"に一致できるregexpは「^\abc$」になります。
パターン文字列に特殊文字が含まれている場合、エスケープを避けるために、raw 文字列リテラル (rプレフィックス付き) を使用することをお勧めします。
例
> 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
> SELECT rlike('%SystemDrive%\\Users\\John', r'%SystemDrive%\\Users.*');
true
注意
Use LIKE to match with simple string pattern. - 単純な文字列パターンとの一致にはLIKEを使用してください。
Since 1.0.0
round
round(expr, d) - exprをd桁の小数点以下で四捨五入した値を返します。丸めモードはHALF_UPです。
例
> SELECT round(2.5, 0);
3
Since 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
Since 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
Since 1.5.0
rtrim
rtrim(str) - 文字列strの末尾のスペース文字を削除します。
引数
- str - 文字列式。
- trimStr - トリミングするトリム文字列の文字。デフォルト値はスペース 1 文字です。
例
> SELECT rtrim(' SparkSQL ');
SparkSQL
Since 1.5.0
schema_of_avro
schema_of_avro(jsonFormatSchema, options) - JSON文字列形式のAvroスキーマをDDL形式のスキーマで返します。
例
> SELECT schema_of_avro('{"type": "record", "name": "struct", "fields": [{"name": "u", "type": ["int", "string"]}]}', map());
STRUCT<u: STRUCT<member0: INT, member1: STRING> NOT NULL>
Since 4.0.0
schema_of_csv
schema_of_csv(csv[, options]) - CSV文字列をDDL形式のスキーマで返します。
例
> SELECT schema_of_csv('1,abc');
STRUCT<_c0: INT, _c1: STRING>
Since 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>>
Since 2.4.0
schema_of_variant
schema_of_variant(v) - バリアントのSQL形式のスキーマを返します。
例
> SELECT schema_of_variant(parse_json('null'));
VOID
> SELECT schema_of_variant(parse_json('[{"b":true,"a":0}]'));
ARRAY<OBJECT<a: BIGINT, b: BOOLEAN>>
Since 4.0.0
schema_of_variant_agg
schema_of_variant_agg(v) - バリアント列のSQL形式でマージされたスキーマを返します。
例
> SELECT schema_of_variant_agg(parse_json(j)) FROM VALUES ('1'), ('2'), ('3') AS tab(j);
BIGINT
> SELECT schema_of_variant_agg(parse_json(j)) FROM VALUES ('{"a": 1}'), ('{"b": true}'), ('{"c": 1.23}') AS tab(j);
OBJECT<a: BIGINT, b: BOOLEAN, c: DECIMAL(3,2)>
Since 4.0.0
schema_of_xml
schema_of_xml(xml[, options]) - XML文字列をDDL形式のスキーマで返します。
例
> SELECT schema_of_xml('<p><a>1</a></p>');
STRUCT<a: BIGINT>
> SELECT schema_of_xml('<p><a attr="2">1</a><a>3</a></p>', map('excludeAttribute', 'true'));
STRUCT<a: ARRAY<BIGINT>>
Since 4.0.0
sec
sec(expr) - exprの secant(正割)を返します。1/java.lang.Math.cosで計算されるような値です。
引数
- expr - ラジアン単位の角度。
例
> SELECT sec(0);
1.0
Since 3.3.0
second
second(timestamp) - 文字列/タイムスタンプの秒部分を返します。
例
> SELECT second('2009-07-30 12:58:59');
59
Since 1.5.0
sentences
sentences(str[, lang[, country]]) - strを単語の配列の配列に分割します。
引数
- str - 解析されるSTRING式。
- lang - ISO 639 Alpha-2(例: 'DE')、Alpha-3、または最大8文字の言語サブタグからの言語コードを指定するオプションのSTRING式。
- country - ISO 3166 alpha-2国コードまたはUN M.49 numer-3地域コードからの国コードを指定するオプションのSTRING式。
例
> SELECT sentences('Hi there! Good morning.');
[["Hi","there"],["Good","morning"]]
> SELECT sentences('Hi there! Good morning.', 'en');
[["Hi","there"],["Good","morning"]]
> SELECT sentences('Hi there! Good morning.', 'en', 'US');
[["Hi","there"],["Good","morning"]]
Since 2.0.0
sequence
sequence(start, stop, step) - startからstop(両端を含む)までの要素の配列を、stepごとに生成します。返される要素の型は、引数式の型と同じです。
Supported types are: byte, short, integer, long, date, timestamp. - サポートされる型は、byte、short、integer、long、date、timestampです。
The start and stop expressions must resolve to the same type. If start and stop expressions resolve to the 'date' or 'timestamp' type then the step expression must resolve to the 'interval' or 'year-month interval' or 'day-time interval' type, otherwise to the same type as the start and stop expressions. - startおよびstop式は同じ型に解決される必要があります。startおよびstop式が'date'または'timestamp'型に解決される場合、step式は'interval'、'year-month interval'、または'day-time interval'型に解決される必要があります。それ以外の場合は、startおよびstop式と同じ型に解決される必要があります。
引数
- start - 式。範囲の開始。
- stop - 式。範囲の終了(両端を含む)。
- step - オプションの式。範囲のステップ。デフォルトでは、startがstop以下の場合に1、そうでない場合は-1です。時間シーケンスの場合はそれぞれ1日、-1日です。startがstopより大きい場合、stepは負である必要があり、その逆も同様です。
例
> 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]
Since 2.4.0
session_user
session_user() - 現在の実行コンテキストのユーザー名。
例
> SELECT session_user();
mockingjay
Since 4.0.0
session_window
session_window(time_column, gap_duration) - タイムスタンプ指定列とギャップ期間を指定してセッションウィンドウを生成します。構造化ストリーミングガイドの「時間ウィンドウの種類」で詳細な説明と例を参照してください。
引数
- time_column - ウィンドウ処理に時間として使用する列または式。time列は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
Since 3.2.0
sha
sha(expr) - exprのsha1ハッシュ値を16進数文字列として返します。
例
> SELECT sha('Spark');
85f5955f4b27a9a4c2aab6ffe5d7189fc298b92c
Since 1.5.0
sha1
sha1(expr) - exprのsha1ハッシュ値を16進数文字列として返します。
例
> SELECT sha1('Spark');
85f5955f4b27a9a4c2aab6ffe5d7189fc298b92c
Since 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
Since 1.5.0
shiftleft
base shiftleft exp - ビット単位の左シフト。
例
> SELECT shiftleft(2, 1);
4
> SELECT 2 << 1;
4
注意
<< 演算子は、Spark 4.0.0 で shiftleft のエイリアスとして追加されました。
Since 1.5.0
shiftright
base shiftright expr - ビット単位(符号付き)右シフト。
例
> SELECT shiftright(4, 1);
2
> SELECT 4 >> 1;
2
注意
>> 演算子は、Spark 4.0.0 で shiftright のエイリアスとして追加されました。
Since 1.5.0
shiftrightunsigned
base shiftrightunsigned expr - ビット単位(符号なし)右シフト。
例
> SELECT shiftrightunsigned(4, 1);
2
> SELECT 4 >>> 1;
2
注意
>>> 演算子は、Spark 4.0.0 で shiftrightunsigned のエイリアスとして追加されました。
Since 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]
注意
この関数は決定論的ではありません。
Since 2.4.0
sign
sign(expr) - exprが負、0、正である場合、それぞれ-1.0、0.0、1.0を返します。
例
> SELECT sign(40);
1.0
> SELECT sign(INTERVAL -'100' YEAR);
-1.0
Since 1.4.0
signum
signum(expr) - exprが負、0、正である場合、それぞれ-1.0、0.0、1.0を返します。
例
> SELECT signum(40);
1.0
> SELECT signum(INTERVAL -'100' YEAR);
-1.0
Since 1.4.0
sin
sin(expr) - exprのsin(正弦)を返します。java.lang.Math.sinで計算されるような値です。
引数
- expr - ラジアン単位の角度。
例
> SELECT sin(0);
0.0
Since 1.4.0
sinh
sinh(expr) - exprの双曲線正弦(sinh)を返します。java.lang.Math.sinhで計算されるような値です。
引数
- expr - 双曲線角度。
例
> SELECT sinh(0);
0.0
Since 1.4.0
size
size(expr) - 配列またはマップのサイズを返します。この関数は、spark.sql.ansi.enabledがfalseでspark.sql.legacy.sizeOfNullがtrueの場合のみ、null入力に対して-1を返します。それ以外の場合は、null入力に対してnullを返します。デフォルト設定では、この関数はnull入力に対してnullを返します。
例
> SELECT size(array('b', 'd', 'c', 'a'));
4
> SELECT size(map('a', 1, 'b', 2));
2
Since 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
Since 1.6.0
slice
slice(x, start, length) - 配列xを、指定された長さで、インデックスstart(配列インデックスは1から始まるか、startが負の場合は末尾から始まる)から部分的に取り出します。
例
> SELECT slice(array(1, 2, 3, 4), 2, 2);
[2,3]
> SELECT slice(array(1, 2, 3, 4), -2, 2);
[3,4]
Since 2.4.0
smallint
smallint(expr) - 値exprをターゲットデータ型smallintにキャストします。
Since 2.0.1
some
some(expr) - exprの値のいずれかが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
Since 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"]
> SELECT sort_array(array('b', 'd', null, 'c', 'a'), false);
["d","c","b","a",null]
Since 1.5.0
soundex
soundex(str) - 文字列のSoundexコードを返します。
例
> SELECT soundex('Miller');
M460
Since 1.5.0
space
space(n) - n個のスペースで構成される文字列を返します。
例
> SELECT concat(space(2), '1');
1
Since 1.5.0
spark_partition_id
spark_partition_id() - 現在のパーティションIDを返します。
例
> SELECT spark_partition_id();
0
Since 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"]
Since 1.5.0
split_part
split_part(str, delimiter, partNum) - strをdelimiterで分割し、要求された部分(1から始まる)を返します。入力がいずれもnullの場合、nullを返します。partNumが分割部分の範囲外の場合、空文字列を返します。partNumが0の場合、エラーが発生します。partNumが負の場合、部分は文字列の末尾から逆順に数えられます。delimiterが空文字列の場合、strは分割されません。
例
> SELECT split_part('11.12.13', '.', 3);
13
Since 3.3.0
sql_keywords
sql_keywords() - Spark SQLのキーワードを取得します。
例
> SELECT * FROM sql_keywords() LIMIT 2;
ADD false
AFTER false
Since 3.5.0
sqrt
sqrt(expr) - exprの平方根を返します。
例
> SELECT sqrt(4);
2.0
Since 1.1.1
stack
stack(n, expr1, ..., exprk) - expr1、...、exprkをn行に分割します。特に指定がない限り、デフォルトでcol0、col1などの列名を使用します。
例
> SELECT stack(2, 1, 2, 3);
1 2
3 NULL
Since 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
Since 3.3.0
std
std(expr) - グループの値から計算された標本標準偏差を返します。
例
> SELECT std(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
Since 1.6.0
stddev
stddev(expr) - グループの値から計算された標本標準偏差を返します。
例
> SELECT stddev(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
Since 1.6.0
stddev_pop
stddev_pop(expr) - グループの値から計算された母標準偏差を返します。
例
> SELECT stddev_pop(col) FROM VALUES (1), (2), (3) AS tab(col);
0.816496580927726
Since 1.6.0
stddev_samp
stddev_samp(expr) - グループの値から計算された標本標準偏差を返します。
例
> SELECT stddev_samp(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
Since 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}
Since 2.0.1
string
string(expr) - 値exprをターゲットデータ型stringにキャストします。
Since 2.0.1
string_agg
string_agg(expr[, delimiter])[ WITHIN GROUP (ORDER BY key [ASC | DESC] [,...])] - NULLでない入力値の連結を、keyでソートされた区切り文字で区切って返します。すべての値がNULLの場合、NULLが返されます。
引数
- expr - 連結される文字列またはバイナリ式。
- delimiter - 入力値を区切るために使用されるオプションの文字列またはバイナリ折りたたみ可能式。NULL の場合、区切り文字なしで連結が実行されます。デフォルトは NULL です。
- key - 入力値を順序付けするためのオプションの式。複数のキーを指定できます。指定しない場合、結果の行の順序は決定論的ではありません。
例
> SELECT string_agg(col) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
abc
> SELECT string_agg(col) WITHIN GROUP (ORDER BY col DESC) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
cba
> SELECT string_agg(col) FROM VALUES ('a'), (NULL), ('b') AS tab(col);
ab
> SELECT string_agg(col) FROM VALUES ('a'), ('a') AS tab(col);
aa
> SELECT string_agg(DISTINCT col) FROM VALUES ('a'), ('a'), ('b') AS tab(col);
ab
> SELECT string_agg(col, ', ') FROM VALUES ('a'), ('b'), ('c') AS tab(col);
a, b, c
> SELECT string_agg(col) FROM VALUES (NULL), (NULL) AS tab(col);
NULL
注意
- 順序が指定されていない場合、シャッフル後に行の順序が決定論的でなくなる可能性があるため、関数は決定論的ではありません。
- DISTINCT が指定されている場合、expr と key は同じ式である必要があります。
Since 4.0.0
struct
struct(col1, col2, col3, ...) - 指定されたフィールド値を持つ構造体を作成します。
例
> SELECT struct(1, 2, 3);
{"col1":1,"col2":2,"col3":3}
Since 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
Since 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
Since 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
Since 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
Since 1.0.0
tan
tan(expr) - exprのtan(正接)を返します。java.lang.Math.tanで計算されるような値です。
引数
- expr - ラジアン単位の角度。
例
> SELECT tan(0);
0.0
Since 1.4.0
tanh
tanh(expr) - exprの双曲線正接(tanh)を返します。java.lang.Math.tanhで計算されるような値です。
引数
- expr - 双曲線角度。
例
> SELECT tanh(0);
0.0
Since 1.4.0
timestamp
timestamp(expr) - 値exprをターゲットデータ型timestampにキャストします。
Since 2.0.1
timestamp_micros
timestamp_micros(microseconds) - UTCエポックからのマイクロ秒数を元にタイムスタンプを作成します。
例
> SELECT timestamp_micros(1230219000123123);
2008-12-25 07:30:00.123123
Since 3.1.0
timestamp_millis
timestamp_millis(milliseconds) - UTCエポックからのミリ秒数を元にタイムスタンプを作成します。
例
> SELECT timestamp_millis(1230219000123);
2008-12-25 07:30:00.123
Since 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
Since 3.1.0
tinyint
tinyint(expr) - 値exprをターゲットデータ型tinyintにキャストします。
Since 2.0.1
to_avro
to_avro(child[, jsonFormatSchema]) - Catalystバイナリ入力値を対応するAvro形式の結果に変換します。
例
> SELECT to_avro(s, '{"type": "record", "name": "struct", "fields": [{ "name": "u", "type": ["int","string"] }]}') IS NULL FROM (SELECT NULL AS s);
[true]
> SELECT to_avro(s) IS NULL FROM (SELECT NULL AS s);
[true]
Since 4.0.0
to_binary
to_binary(str[, fmt]) - 指定されたfmtに基づいて、入力文字列strをバイナリ値に変換します。fmtは、「hex」、「utf-8」、「utf8」、または「base64」のいずれかのケースインセンシティブな文字列リテラルにできます。fmtが省略された場合、デフォルトのバイナリ形式は「hex」です。入力パラメータのいずれかがNULLの場合、関数はNULLを返します。
例
> SELECT to_binary('abc', 'utf-8');
abc
Since 3.3.0
to_char
to_char(expr, format) - formatに基づいてexprを文字列に変換します。変換に失敗した場合、例外が発生します。formatには、大文字小文字を区別せずに次の文字を含めることができます:「0」または「9」:0から9までの予想される数字を指定します。フォーマット文字列内の0または9のシーケンスは、入力値の数字シーケンスに一致し、フォーマット文字列の対応するシーケンスと同じ長さの結果文字列を生成します。結果文字列は、0/9シーケンスが小数点より前にある場合、小数のマッチング部分よりも多くの数字を含む場合、ゼロで左パディングされます。それ以外の場合はスペースでパディングされます。「.」または「D」:小数点(オプション、一度だけ許可)の位置を指定します。「,」または「G」:グループ化(千単位)区切り文字(,)の位置を指定します。各グループ化区切り文字の左右には、0または9が必要です。「$」:$通貨記号の位置を指定します。この文字は一度だけ指定できます。「S」または「MI」:符号(-または+)(オプション、フォーマット文字列の先頭または末尾に一度だけ許可)の位置を指定します。注意:「S」は正の値に'+'を出力しますが、「MI」はスペースを出力します。「PR」:フォーマット文字列の末尾でのみ許可され、入力値が負の場合に結果文字列が山括弧で囲まれることを指定します。(「<1>」)。exprが日付/時刻の場合、formatは有効な日付/時刻パターンである必要があります。詳細はDatetime Patternsを参照してください。exprがバイナリの場合、次のいずれかの形式で文字列に変換されます:「base64」:base 64文字列。「hex」:16進数形式の文字列。「utf-8」:入力バイナリをUTF-8文字列としてデコードします。
例
> 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-
> SELECT to_char(date'2016-04-08', 'y');
2016
> SELECT to_char(x'537061726b2053514c', 'base64');
U3BhcmsgU1FM
> SELECT to_char(x'537061726b2053514c', 'hex');
537061726B2053514C
> SELECT to_char(encode('abc', 'utf-8'), 'utf-8');
abc
Since 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
Since 3.0.0
to_date
to_date(date_str[, fmt]) - date_str式をfmt式で解析して日付に変換します。無効な入力の場合、nullを返します。fmtが省略された場合、デフォルトでは日付へのキャスト規則に従います。
引数
- date_str - 日付に解析される文字列。
- fmt - 従う日付フォーマットパターン。有効な日付と時刻のフォーマットパターンについては、Datetime Patternsを参照してください。
例
> SELECT to_date('2009-07-30 04:17:52');
2009-07-30
> SELECT to_date('2016-12-31', 'yyyy-MM-dd');
2016-12-31
Since 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}]
Since 2.2.0
to_number
to_number(expr, fmt) - 文字列フォーマット「fmt」に基づいて、文字列「expr」を数値に変換します。変換に失敗した場合、例外が発生します。formatには、大文字小文字を区別せずに次の文字を含めることができます:「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
Since 3.3.0
to_protobuf
to_protobuf(child, messageName, descFilePath, options) - Catalystバイナリ入力値を対応するProtobuf形式の結果に変換します。
例
> SELECT to_protobuf(s, 'Person', '/path/to/descriptor.desc', map('emitDefaultValues', 'true')) IS NULL FROM (SELECT NULL AS s);
[true]
Since 4.0.0
to_timestamp
to_timestamp(timestamp_str[, fmt]) - timestamp_str式をfmt式で解析してタイムスタンプに変換します。無効な入力の場合、nullを返します。fmtが省略された場合、デフォルトではタイムスタンプへのキャスト規則に従います。結果のデータ型は、設定spark.sql.timestampTypeの値と一致します。
引数
- timestamp_str - タイムスタンプに解析される文字列。
- fmt - 従うタイムスタンプフォーマットパターン。有効な日付と時刻のフォーマットパターンについては、Datetime Patternsを参照してください。
例
> 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
Since 2.2.0
to_timestamp_ltz
to_timestamp_ltz(timestamp_str[, fmt]) - timestamp_str式をfmt式で解析してローカルタイムゾーン付きタイムスタンプに変換します。無効な入力の場合、nullを返します。fmtが省略された場合、デフォルトではタイムスタンプへのキャスト規則に従います。
引数
- timestamp_str - ローカルタイムゾーン付きタイムスタンプに解析される文字列。
- fmt - 従うタイムスタンプフォーマットパターン。有効な日付と時刻のフォーマットパターンについては、Datetime Patternsを参照してください。
例
> 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
Since 3.4.0
to_timestamp_ntz
to_timestamp_ntz(timestamp_str[, fmt]) - timestamp_str式をfmt式で解析してタイムゾーンなしタイムスタンプに変換します。無効な入力の場合、nullを返します。fmtが省略された場合、デフォルトではタイムスタンプへのキャスト規則に従います。
引数
- timestamp_str - タイムゾーンなしタイムスタンプに解析される文字列。
- fmt - 従うタイムスタンプフォーマットパターン。有効な日付と時刻のフォーマットパターンについては、Datetime Patternsを参照してください。
例
> 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
Since 3.4.0
to_unix_timestamp
to_unix_timestamp(timeExp[, fmt]) - 指定された時刻のUNIXタイムスタンプを返します。
引数
- timeExp - UNIXタイムスタンプとして返される日付/タイムスタンプまたは文字列。
- fmt - 従う日付/時刻フォーマットパターン。
timeExpが文字列でない場合は無視されます。デフォルト値は「yyyy-MM-dd HH:mm:ss」です。有効な日付と時刻のフォーマットパターンについては、Datetime Patternsを参照してください。
例
> SELECT to_unix_timestamp('2016-04-08', 'yyyy-MM-dd');
1460098800
Since 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
Since 1.5.0
to_varchar
to_varchar(expr, format) - formatに基づいてexprを文字列に変換します。変換に失敗した場合、例外が発生します。formatには、大文字小文字を区別せずに次の文字を含めることができます:「0」または「9」:0から9までの予想される数字を指定します。フォーマット文字列内の0または9のシーケンスは、入力値の数字シーケンスに一致し、フォーマット文字列の対応するシーケンスと同じ長さの結果文字列を生成します。結果文字列は、0/9シーケンスが小数点より前にある場合、小数のマッチング部分よりも多くの数字を含む場合、ゼロで左パディングされます。それ以外の場合はスペースでパディングされます。「.」または「D」:小数点(オプション、一度だけ許可)の位置を指定します。「,」または「G」:グループ化(千単位)区切り文字(,)の位置を指定します。各グループ化区切り文字の左右には、0または9が必要です。「$」:$通貨記号の位置を指定します。この文字は一度だけ指定できます。「S」または「MI」:符号(-または+)(オプション、フォーマット文字列の先頭または末尾に一度だけ許可)の位置を指定します。注意:「S」は正の値に'+'を出力しますが、「MI」はスペースを出力します。「PR」:フォーマット文字列の末尾でのみ許可され、入力値が負の場合に結果文字列が山括弧で囲まれることを指定します。(「<1>」)。exprが日付/時刻の場合、formatは有効な日付/時刻パターンである必要があります。詳細はDatetime Patternsを参照してください。exprがバイナリの場合、次のいずれかの形式で文字列に変換されます:「base64」:base 64文字列。「hex」:16進数形式の文字列。「utf-8」:入力バイナリをUTF-8文字列としてデコードします。
例
> 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-
> SELECT to_varchar(date'2016-04-08', 'y');
2016
> SELECT to_varchar(x'537061726b2053514c', 'base64');
U3BhcmsgU1FM
> SELECT to_varchar(x'537061726b2053514c', 'hex');
537061726B2053514C
> SELECT to_varchar(encode('abc', 'utf-8'), 'utf-8');
abc
Since 3.5.0
to_variant_object
to_variant_object(expr) - ネストされた入力(配列/マップ/構造体)をバリアントに変換します。マップと構造体は、SQL構造体とは異なり順序付けられていないバリアントオブジェクトに変換されます。入力マップは文字列キーのみを持つことができます。
例
> SELECT to_variant_object(named_struct('a', 1, 'b', 2));
{"a":1,"b":2}
> SELECT to_variant_object(array(1, 2, 3));
[1,2,3]
> SELECT to_variant_object(array(named_struct('a', 1)));
[{"a":1}]
> SELECT to_variant_object(array(map("a", 2)));
[{"a":2}]
Since 4.0.0
to_xml
to_xml(expr[, options]) - 指定された構造体値を持つXML文字列を返します。
例
> SELECT to_xml(named_struct('a', 1, 'b', 2));
<ROW>
<a>1</a>
<b>2</b>
</ROW>
> SELECT to_xml(named_struct('time', to_timestamp('2015-08-26', 'yyyy-MM-dd')), map('timestampFormat', 'dd/MM/yyyy'));
<ROW>
<time>26/08/2015</time>
</ROW>
Since 4.0.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]
Since 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}
Since 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}
Since 3.0.0
translate
translate(input, from, to) - from文字列に含まれる文字をto文字列の対応する文字に置き換えることによって、input文字列を変換します。
例
> SELECT translate('AaBbCc', 'abc', '123');
A1B2C3
Since 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 - トリミングするトリム文字列の文字。デフォルト値はスペース 1 文字です。
- 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
Since 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
Since 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
Since 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
Since 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
Since 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
Since 3.2.0
try_element_at
try_element_at(array, index) - 指定された(1から始まる)インデックスの配列要素を返します。インデックスが0の場合、Sparkはエラーをスローします。インデックスが負の場合、末尾から先頭の要素にアクセスします。インデックスが配列の長さを超える場合、関数は常に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
Since 3.3.0
try_make_interval
try_make_interval([years[, months[, weeks[, days[, hours[, mins[, secs]]]]]]]) - make_intervalの特殊バージョンで、同じ操作を実行しますが、オーバーフローが発生した場合はNULLを返します。
引数
- years - 年数 (正または負)。
- months - 月数 (正または負)。
- weeks - 週数 (正または負)。
- days - 日数 (正または負)。
- hours - 時間数 (正または負)。
- mins - 分数 (正または負)。
- secs - マイクロ秒精度での小数点以下の部分を含む秒数。
例
> SELECT try_make_interval(100, 11, 1, 1, 12, 30, 01.001001);
100 years 11 months 8 days 12 hours 30 minutes 1.001001 seconds
> SELECT try_make_interval(100, null, 3);
NULL
> SELECT try_make_interval(0, 1, 0, 1, 0, 0, 100.000001);
1 months 1 days 1 minutes 40.000001 seconds
> SELECT try_make_interval(2147483647);
NULL
Since 4.0.0
try_make_timestamp
try_make_timestamp(year, month, day, hour, min, sec[, timezone]) - 年、月、日、時、分、秒、およびタイムゾーンフィールドからタイムスタンプを作成しようとします。結果のデータ型は、設定spark.sql.timestampTypeの値と一致します。無効な入力の場合、関数はNULLを返します。
引数
- year - 表現する年 (1 から 9999)。
- month - 表現する月 (1 月から 12 月)。
- day - 表現する日 (1 から 31)。
- hour - 表現する時 (0 から 23)。
- min - 表現する分 (0 から 59)。
- sec - 表現する秒とマイクロ秒の分数 (0 から 60)。値は 13 のような整数、または 13.123 のような分数にできます。sec 引数が 60 に等しい場合、秒フィールドは 0 に設定され、最終タイムスタンプに 1 分が追加されます。
- timezone - タイムゾーン識別子。例: CET, UTC など。
例
> SELECT try_make_timestamp(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT try_make_timestamp(2014, 12, 28, 6, 30, 45.887, 'CET');
2014-12-27 21:30:45.887
> SELECT try_make_timestamp(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT try_make_timestamp(2019, 6, 30, 23, 59, 1);
2019-06-30 23:59:01
> SELECT try_make_timestamp(null, 7, 22, 15, 30, 0);
NULL
> SELECT try_make_timestamp(2024, 13, 22, 15, 30, 0);
NULL
Since 4.0.0
try_make_timestamp_ltz
try_make_timestamp_ltz(year, month, day, hour, min, sec[, timezone]) - 年、月、日、時、分、秒、およびタイムゾーンフィールドからローカルタイムゾーン付きの現在のタイムスタンプを作成しようとします。無効な入力の場合、関数はNULLを返します。
引数
- year - 表現する年 (1 から 9999)。
- month - 表現する月 (1 月から 12 月)。
- day - 表現する日 (1 から 31)。
- hour - 表現する時 (0 から 23)。
- min - 表現する分 (0 から 59)。
- sec - 表現する秒とマイクロ秒の分数 (0 から 60)。sec 引数が 60 に等しい場合、秒フィールドは 0 に設定され、最終タイムスタンプに 1 分が追加されます。
- timezone - タイムゾーン識別子。例: CET, UTC など。
例
> SELECT try_make_timestamp_ltz(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT try_make_timestamp_ltz(2014, 12, 28, 6, 30, 45.887, 'CET');
2014-12-27 21:30:45.887
> SELECT try_make_timestamp_ltz(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT try_make_timestamp_ltz(null, 7, 22, 15, 30, 0);
NULL
> SELECT try_make_timestamp_ltz(2024, 13, 22, 15, 30, 0);
NULL
Since 4.0.0
try_make_timestamp_ntz
try_make_timestamp_ntz(year, month, day, hour, min, sec) - 年、月、日、時、分、秒フィールドからローカル日時を作成しようとします。無効な入力の場合、関数はNULLを返します。
引数
- year - 表現する年 (1 から 9999)。
- month - 表現する月 (1 月から 12 月)。
- day - 表現する日 (1 から 31)。
- hour - 表現する時 (0 から 23)。
- min - 表現する分 (0 から 59)。
- sec - 表現する秒とマイクロ秒の分数 (0 から 60)。sec 引数が 60 に等しい場合、秒フィールドは 0 に設定され、最終タイムスタンプに 1 分が追加されます。
例
> SELECT try_make_timestamp_ntz(2014, 12, 28, 6, 30, 45.887);
2014-12-28 06:30:45.887
> SELECT try_make_timestamp_ntz(2019, 6, 30, 23, 59, 60);
2019-07-01 00:00:00
> SELECT try_make_timestamp_ntz(null, 7, 22, 15, 30, 0);
NULL
> SELECT try_make_timestamp_ntz(2024, 13, 22, 15, 30, 0);
NULL
Since 4.0.0
try_mod
try_mod(dividend, divisor) - expr1/expr2の剰余を返します。dividendは数値である必要があります。divisorは数値である必要があります。
例
> SELECT try_mod(3, 2);
1
> SELECT try_mod(2L, 2L);
0
> SELECT try_mod(3.0, 2.0);
1.0
> SELECT try_mod(1, 0);
NULL
Since 4.0.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
Since 3.3.0
try_parse_json
try_parse_json(jsonStr) - JSON文字列をVariant値として解析します。文字列が無効なJSON値の場合、NULLを返します。
例
> SELECT try_parse_json('{"a":1,"b":0.8}');
{"a":1,"b":0.8}
> SELECT try_parse_json('{"a":1,');
NULL
Since 4.0.0
try_parse_url
try_parse_url(url, partToExtract[, key]) - parse_urlの特殊バージョンで、同じ操作を実行しますが、解析が実行できない場合はエラーを発生させる代わりにNULL値を返します。
例
> SELECT try_parse_url('https://spark.dokyumento.jp/path?query=1', 'HOST');
spark.apache.org
> SELECT try_parse_url('https://spark.dokyumento.jp/path?query=1', 'QUERY');
query=1
> SELECT try_parse_url('inva lid://spark.dokyumento.jp/path?query=1', 'QUERY');
NULL
> SELECT try_parse_url('https://spark.dokyumento.jp/path?query=1', 'QUERY', 'query');
1
Since 4.0.0
try_reflect
try_reflect(class, method[, arg1[, arg2 ..]]) - reflectの特殊バージョンで、同じ操作を実行しますが、invokeメソッドで例外が発生した場合にエラーを発生させる代わりにNULL値を返します。
例
> SELECT try_reflect('java.util.UUID', 'randomUUID');
c33fb387-8500-4bfa-81d2-6e0e3e930df2
> SELECT try_reflect('java.util.UUID', 'fromString', 'a5cf6c42-0c85-418f-af6c-3e4e5b1328f2');
a5cf6c42-0c85-418f-af6c-3e4e5b1328f2
> SELECT try_reflect('java.net.URLDecoder', 'decode', '%');
NULL
Since 4.0.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
Since 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
Since 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
Since 3.3.0
try_to_number
try_to_number(expr, fmt) - 文字列フォーマットfmtに基づいて、文字列「expr」を数値に変換します。文字列「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
Since 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 - 従うタイムスタンプフォーマットパターン。有効な日付と時刻のフォーマットパターンについては、Datetime Patternsを参照してください。
例
> 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
Since 3.4.0
try_url_decode
try_url_decode(str) - url_decodeの特殊バージョンで、同じ操作を実行しますが、デコードが実行できない場合はエラーを発生させる代わりにNULL値を返します。
引数
- str - デコードされる文字列式。
例
> SELECT try_url_decode('https%3A%2F%2Fspark.apache.org');
https://spark.dokyumento.jp
Since 4.0.0
try_validate_utf8
try_validate_utf8(str) - strが有効なUTF-8文字列の場合、元の文字列を返します。それ以外の場合はNULLを返します。
引数
- str - 文字列式。
例
> SELECT try_validate_utf8('Spark');
Spark
> SELECT try_validate_utf8(x'61');
a
> SELECT try_validate_utf8(x'80');
NULL
> SELECT try_validate_utf8(x'61C262');
NULL
Since 4.0.0
try_variant_get
try_variant_get(v, path[, type]) - pathに従ってvからサブバリアントを抽出し、その後サブバリアントをtypeにキャストします。typeが省略されている場合、デフォルトはvariantになります。パスが存在しない場合、またはキャストに失敗した場合はnullを返します。
例
> SELECT try_variant_get(parse_json('{"a": 1}'), '$.a', 'int');
1
> SELECT try_variant_get(parse_json('{"a": 1}'), '$.b', 'int');
NULL
> SELECT try_variant_get(parse_json('[1, "2"]'), '$[1]', 'string');
2
> SELECT try_variant_get(parse_json('[1, "2"]'), '$[2]', 'string');
NULL
> SELECT try_variant_get(parse_json('[1, "hello"]'), '$[1]');
"hello"
> SELECT try_variant_get(parse_json('[1, "hello"]'), '$[1]', 'int');
NULL
Since 4.0.0
typeof
typeof(expr) - 入力のデータ型のDDL形式の型文字列を返します。
例
> SELECT typeof(1);
int
> SELECT typeof(array(1));
array<int>
Since 3.0.0
ucase
ucase(str) - strのすべての文字を大文字に変更したものを返します。
例
> SELECT ucase('SparkSql');
SPARKSQL
Since 1.0.1
unbase64
unbase64(str) - 引数(base 64文字列str)をバイナリに変換します。
例
> SELECT unbase64('U3BhcmsgU1FM');
Spark SQL
Since 1.5.0
unhex
unhex(expr) - 16進数exprをバイナリに変換します。
例
> SELECT decode(unhex('537061726B2053514C'), 'UTF-8');
Spark SQL
Since 1.5.0
uniform
uniform(min, max[, seed]) - 指定された数値範囲で、独立同分布(i.i.d.)の値を持つランダムな値を返します。ランダムシードはオプションです。範囲の最小値と最大値を指定する数値は定数である必要があります。両方の数値が整数の場合、結果も整数になります。それ以外の場合、1つまたは両方の数値が浮動小数点数の場合、結果も浮動小数点数になります。
例
> SELECT uniform(10, 20, 0) > 0 AS result;
true
Since 4.0.0
unix_date
unix_date(date) - 1970-01-01からの日数(日単位)を返します。
例
> SELECT unix_date(DATE("1970-01-02"));
1
Since 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
Since 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
Since 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
Since 3.1.0
unix_timestamp
unix_timestamp([timeExp[, fmt]]) - 現在または指定された時刻のUNIXタイムスタンプを返します。
引数
- timeExp - 日付/タイムスタンプまたは文字列。指定されない場合、デフォルトで現在の時刻になります。
- fmt - 従う日付/時刻フォーマットパターン。
timeExpが文字列でない場合は無視されます。デフォルト値は「yyyy-MM-dd HH:mm:ss」です。有効な日付と時刻のフォーマットパターンについては、 Datetime Patternsを参照してください。
例
> SELECT unix_timestamp();
1476884637
> SELECT unix_timestamp('2016-04-08', 'yyyy-MM-dd');
1460041200
Since 1.5.0
upper
upper(str) - strのすべての文字を大文字に変更したものを返します。
例
> SELECT upper('SparkSql');
SPARKSQL
Since 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
Since 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
Since 3.4.0
user
user() - 現在の実行コンテキストのユーザー名。
例
> SELECT user();
mockingjay
Since 3.4.0
uuid
uuid() - Universally Unique Identifier(UUID)文字列を返します。値は、標準のUUID 36文字文字列として返されます。
例
> SELECT uuid();
46707d92-02f4-4817-8116-a4c3b23e6266
注意
この関数は決定論的ではありません。
Since 2.3.0
validate_utf8
validate_utf8(str) - strが有効なUTF-8文字列の場合、元の文字列を返します。それ以外の場合は例外をスローします。
引数
- str - 文字列式。
例
> SELECT validate_utf8('Spark');
Spark
> SELECT validate_utf8(x'61');
a
Since 4.0.0
var_pop
var_pop(expr) - グループの値から計算された母分散を返します。
例
> SELECT var_pop(col) FROM VALUES (1), (2), (3) AS tab(col);
0.6666666666666666
Since 1.6.0
var_samp
var_samp(expr) - グループの値から計算された標本分散を返します。
例
> SELECT var_samp(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
Since 1.6.0
variance
variance(expr) - グループの値から計算された標本分散を返します。
例
> SELECT variance(col) FROM VALUES (1), (2), (3) AS tab(col);
1.0
Since 1.6.0
variant_explode
variant_explode(expr) - バリアントオブジェクト/配列を、そのフィールド/要素を含む複数の行に分割します。結果スキーマはstruct<pos int, key string, value variant>です。posは親オブジェクト/配列内のフィールド/要素の位置、valueはフィールド/要素の値です。keyはバリアントオブジェクトを展開する際のフィールド名、またはバリアント配列を展開する際はNULLです。SQL NULL、バリアントNULL、その他のバリアント値を含む、バリアント配列/オブジェクトではない入力は無視されます。
例
> SELECT * from variant_explode(parse_json('["hello", "world"]'));
0 NULL "hello"
1 NULL "world"
> SELECT * from variant_explode(input => parse_json('{"a": true, "b": 3.14}'));
0 a true
1 b 3.14
Since 4.0.0
variant_explode_outer
variant_explode_outer(expr) - バリアントオブジェクト/配列を、そのフィールド/要素を含む複数の行に分割します。結果スキーマはstruct<pos int, key string, value variant>です。posは親オブジェクト/配列内のフィールド/要素の位置、valueはフィールド/要素の値です。keyはバリアントオブジェクトを展開する際のフィールド名、またはバリアント配列を展開する際はNULLです。SQL NULL、バリアントNULL、その他のバリアント値を含む、バリアント配列/オブジェクトではない入力は無視されます。
例
> SELECT * from variant_explode_outer(parse_json('["hello", "world"]'));
0 NULL "hello"
1 NULL "world"
> SELECT * from variant_explode_outer(input => parse_json('{"a": true, "b": 3.14}'));
0 a true
1 b 3.14
Since 4.0.0
variant_get
variant_get(v, path[, type]) - pathに従ってvからサブバリアントを抽出し、その後サブバリアントをtypeにキャストします。typeが省略されている場合、デフォルトはvariantになります。パスが存在しない場合はnullを返します。キャストに失敗した場合、例外が発生します。
例
> SELECT variant_get(parse_json('{"a": 1}'), '$.a', 'int');
1
> SELECT variant_get(parse_json('{"a": 1}'), '$.b', 'int');
NULL
> SELECT variant_get(parse_json('[1, "2"]'), '$[1]', 'string');
2
> SELECT variant_get(parse_json('[1, "2"]'), '$[2]', 'string');
NULL
> SELECT variant_get(parse_json('[1, "hello"]'), '$[1]');
"hello"
Since 4.0.0
version
version() - Sparkのバージョンを返します。文字列には2つのフィールドが含まれ、最初のフィールドはリリースバージョン、2番目のフィールドはgitリビジョンです。
例
> SELECT version();
3.1.0 a6d6ea3efedbad14d99c24143834cd4e2e52fb40
Since 3.0.0
weekday
weekday(date) - 日付/タイムスタンプの曜日を返します(0 = 月曜日、1 = 火曜日、...、6 = 日曜日)。
例
> SELECT weekday('2009-07-30');
3
Since 2.4.0
weekofyear
weekofyear(date) - 指定された日付の年の週番号を返します。週は月曜日から始まり、週1は3日以上の最初の週とみなされます。
例
> SELECT weekofyear('2008-02-20');
8
Since 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
Since 1.0.1
width_bucket
width_bucket(value, min_value, max_value, num_bucket) - num_bucket個のバケットを持つ等幅ヒストグラムでvalueが割り当てられるバケット番号を、min_valueからmax_valueの範囲で返します。
例
> 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
Since 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 - ウィンドウ処理に時間として使用する列または式。time列はTimestampTypeである必要があります。
- window_duration - ウィンドウの幅を指定する文字列。「interval value」(Interval Literalを参照)で表されます。注意: この期間は固定された時間の長さであり、カレンダーに応じて時間とともに変化しません。
- slide_duration - ウィンドウのスライド間隔を指定する文字列。「interval value」(Interval Literalを参照)で表されます。新しいウィンドウは
slide_durationごとに生成されます。window_duration以下である必要があります。この期間も同様に絶対的なものであり、カレンダーに応じて変化しません。 - start_time - ウィンドウ区間を開始するための、1970-01-01 00:00:00 UTCからのオフセットです。たとえば、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
Since 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
Since 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"]
> SELECT xpath('<a><b>b1</b><b>b2</b><b>b3</b><c>c1</c><c>c2</c></a>','a/b');
[null,null,null]
Since 2.0.0
xpath_boolean
xpath_boolean(xml, xpath) - XPath式がtrueと評価される場合、または一致するノードが見つかった場合にtrueを返します。
例
> SELECT xpath_boolean('<a><b>1</b></a>','a/b');
true
Since 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
Since 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
Since 2.0.0
xpath_int
xpath_int(xml, xpath) - integer値を返します。一致が見つからない場合はゼロ、一致が見つかったが値が数値でない場合はそれを返します。
例
> SELECT xpath_int('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3
Since 2.0.0
xpath_long
xpath_long(xml, xpath) - long integer値を返します。一致が見つからない場合はゼロ、一致が見つかったが値が数値でない場合はそれを返します。
例
> SELECT xpath_long('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3
Since 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
Since 2.0.0
xpath_short
xpath_short(xml, xpath) - short integer値を返します。一致が見つからない場合はゼロ、一致が見つかったが値が数値でない場合はそれを返します。
例
> SELECT xpath_short('<a><b>1</b><b>2</b></a>', 'sum(a/b)');
3
Since 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
Since 2.0.0
xxhash64
xxhash64(expr1, expr2, ...) - 引数の64ビットハッシュ値を返します。ハッシュシードは42です。
例
> SELECT xxhash64('Spark', array(123), 2);
5602566077635097486
Since 3.0.0
year
year(date) - 日付/タイムスタンプの年コンポーネントを返します。
例
> SELECT year('2016-07-30');
2016
Since 1.5.0
zeroifnull
zeroifnull(expr) - exprがnullの場合、ゼロを返します。それ以外の場合はexprを返します。
例
> SELECT zeroifnull(NULL);
0
> SELECT zeroifnull(2);
2
Since 4.0.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"]
Since 2.4.0
|
expr1 | expr2 - expr1とexpr2のビット単位ORの結果を返します。
例
> SELECT 3 | 5;
7
Since 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]
注意
|| for arrays is available since 2.4.0. - 配列に対する||は2.4.0以降で利用可能です。
Since 2.3.0
~
~ expr - exprのビット単位NOTの結果を返します。
例
> SELECT ~ 0;
-1
Since 1.4.0