Beam Calcite SQL スカラー関数
このページでは、Beam Calcite SQLでサポートされているApache Calcite関数を説明します。
比較関数と演算子
| 演算子構文 | 説明 |
|---|---|
| value1 = value2 | 等しい |
| value1 <> value2 | 等しくない |
| value1 > value2 | より大きい |
| value1 >= value2 | 以上 |
| value1 < value2 | より小さい |
| value1 <= value2 | 以下 |
| value IS NULL | 値がnullかどうか |
| value IS NOT NULL | 値がnullでないかどうか |
論理関数と演算子
| 演算子構文 | 説明 |
|---|---|
| boolean1 OR boolean2 | boolean1がTRUEかboolean2がTRUEかどうか |
| boolean1 AND boolean2 | boolean1とboolean2が両方ともTRUEかどうか |
| NOT boolean | booleanがTRUEでないかどうか。booleanがUNKNOWNの場合はUNKNOWNを返す |
算術式
| 演算子構文 | 説明 |
|---|---|
| numeric1 + numeric2 | numeric1とnumeric2の和を返す |
| numeric1 - numeric2 | numeric1からnumeric2を引いた値を返す |
| numeric1 * numeric2 | numeric1にnumeric2を掛けた値を返す |
| numeric1 / numeric2 | numeric1をnumeric2で割った値を返す |
| MOD(numeric, numeric) | numeric1をnumeric2で割った余りを返す。numeric1が負の場合のみ、結果は負になる |
数学関数
| 演算子構文 | 説明 |
|---|---|
| ABS(numeric) | numericの絶対値を返す |
| SQRT(numeric) | numericの平方根を返す |
| LN(numeric) | numericの自然対数(底e)を返す |
| LOG10(numeric) | numericの底10の対数を返す |
| EXP(numeric) | eをnumericのべき乗した値を返す |
| ACOS(numeric) | numericのアークコサインを返す |
| ASIN(numeric) | numericのアークサインを返す |
| ATAN(numeric) | numericのアークタンジェントを返す |
| COT(numeric) | numericのコタンジェントを返す |
| DEGREES(numeric) | numericをラジアンから度に変換する |
| RADIANS(numeric) | numericを度からラジアンに変換する |
| SIGN(numeric) | numericの符号を返す |
| SIN(numeric) | numericのサインを返す |
| TAN(numeric) | numericのタンジェントを返す |
| ROUND(numeric1, numeric2) | numeric1を小数点以下numeric2桁に丸める |
日付関数
| 演算子構文 | 説明 |
|---|---|
| LOCALTIME | セッションタイムゾーンにおける現在の日時をTIMEデータ型の値として返す |
| LOCALTIME(precision) | セッションタイムゾーンにおける現在の日時をTIMEデータ型の値として返し、precision桁の精度を持つ |
| LOCALTIMESTAMP | セッションタイムゾーンにおける現在の日時をTIMESTAMPデータ型の値として返す |
| LOCALTIMESTAMP(precision) | セッションタイムゾーンにおける現在の日時をTIMESTAMPデータ型の値として返し、precision桁の精度を持つ |
| CURRENT_TIME | セッションタイムゾーンにおける現在時刻をTIMESTAMP WITH TIME ZONEデータ型の値として返す |
| CURRENT_DATE | セッションタイムゾーンにおける現在の日付をDATEデータ型の値として返す |
| CURRENT_TIMESTAMP | セッションタイムゾーンにおける現在の日時をTIMESTAMP WITH TIME ZONEデータ型の値として返す |
| EXTRACT(timeUnit FROM datetime) | datetime値式から指定されたdatetimeフィールドの値を抽出して返す |
| FLOOR(datetime TO timeUnit) | datetimeをtimeUnitに切り下げる |
| CEIL(datetime TO timeUnit) | datetimeをtimeUnitに切り上げる |
| YEAR(date) | EXTRACT(YEAR FROM date)と同等。整数を返す。 |
| QUARTER(date) | EXTRACT(QUARTER FROM date)と同等。1から4の整数を返す。 |
| MONTH(date) | EXTRACT(MONTH FROM date)と同等。1から12の整数を返す。 |
| WEEK(date) | EXTRACT(WEEK FROM date)と同等。1から53の整数を返す。 |
| DAYOFYEAR(date) | EXTRACT(DOY FROM date)と同等。1から366の整数を返す。 |
| DAYOFMONTH(date) | EXTRACT(DAY FROM date)と同等。1から31の整数を返す。 |
| DAYOFWEEK(date) | EXTRACT(DOW FROM date)と同等。1から7の整数を返す。 |
| HOUR(date) | EXTRACT(HOUR FROM date)と同等。0から23の整数を返す。 |
| MINUTE(date) | EXTRACT(MINUTE FROM date)と同等。0から59の整数を返す。 |
| SECOND(date) | EXTRACT(SECOND FROM date)と同等。0から59の整数を返す。 |
文字列関数
| 演算子構文 | 説明 |
|---|---|
| string || string | 2つの文字列を連結する |
| CHAR_LENGTH(string) | 文字列の文字数を返す |
| CHARACTER_LENGTH(string) | CHAR_LENGTH(string)と同じ |
| UPPER(string) | 大文字に変換された文字列を返す |
| LOWER(string) | 小文字に変換された文字列を返す |
| POSITION(string1 IN string2) | string2におけるstring1の最初の出現位置を返す |
| POSITION(string1 IN string2 FROM integer) | 指定された位置から始まるstring2におけるstring1の最初の出現位置を返す(標準SQLではない) |
| TRIM( { BOTH | LEADING | TRAILING } string1 FROM string2) | string1の文字のみを含む最長の文字列をstring2の先頭/末尾/両端から削除する |
| OVERLAY(string1 PLACING string2 FROM integer [ FOR integer2 ]) | string1の部分文字列をstring2で置き換える |
| SUBSTRING(string FROM integer) | 指定された位置から始まる文字列の部分文字列を返す |
| SUBSTRING(string FROM integer FOR integer) | 指定された位置から指定された長さの部分文字列を返す |
| INITCAP(string) | 各単語の最初の文字を大文字、残りを小文字に変換した文字列を返す。単語は、非英数字文字で区切られた英数字文字のシーケンスである。 |
条件関数
| 演算子構文 | 説明 |
|---|---|
| CASE value WHEN value1 [, value11 ]* THEN result1 [ WHEN valueN [, valueN1 ]* THEN resultN ]* [ ELSE resultZ ] END | 単純なCASE |
| CASE WHEN condition1 THEN result1 [ WHEN conditionN THEN resultN ]* [ ELSE resultZ ] END | 検索CASE |
| NULLIF(value, value) | 値が同じ場合はNULLを返す。例えば、NULLIF(5, 5)はNULLを返し、NULLIF(5, 0)は5を返す。 |
| COALESCE(value, value [, value ]*) | 最初の値がnullの場合に値を提供する。例えば、COALESCE(NULL, 5)は5を返す。 |

