本トピックでは、Realtime Compute for Apache Flink でサポートされるすべてのビルトイン関数について説明します。
サポートされる関数
Ververica Runtime(VVR)3.0.0 を使用した Realtime Compute for Apache Flink では、Apache Flink 1.12 に含まれる関数に加えて、追加のビルトイン関数が提供されます。詳細については、「スカラ関数」「テーブル値関数」「集約関数」をご参照ください。以下の表には、Apache Flink 1.15 を基盤とする Realtime Compute for Apache Flink でサポートされるすべてのビルトイン関数とその概要が記載されています。
サポートされる関数のセットは、使用する Apache Flink のバージョンによって異なります。詳細については、「Flink 1.12 ビルトイン関数」「Flink 1.13 ビルトイン関数」「Flink 1.14 ビルトイン関数」「Flink 1.15 ビルトイン関数」「Flink 1.16 ビルトイン関数」「Flink 1.17 ビルトイン関数」をご参照ください。
ビルトイン関数が要件を満たさない場合は、ユーザー定義関数(UDF)を使用できます。詳細については、「概要」をご参照ください。
制限事項
VVR 11.1 以降の Realtime Compute エンジンでは、SQL テキストを使用して Table API ジョブ内でビルトイン関数を呼び出すことが可能です。
スカラ関数
カテゴリ | 関数 | 説明 |
比較関数 | value1 が value2 と等しい場合に true を返します。 | |
value1 が value2 と等しくない場合に true を返します。 | ||
value1 が value2 より大きい場合に true を返します。 | ||
value1 が value2 以上の場合に true を返します。 | ||
value1 が value2 より小さい場合に true を返します。 | ||
value1 が value2 以下の場合に true を返します。 | ||
値が NULL の場合に true を返します。 | ||
値が NULL でない場合に true を返します。 | ||
value1 と value2 のデータ型または値が異なる場合に true を返します。すべての NULL 値は等価と見なされます。 | ||
value1 と value2 のデータ型および値が同一の場合に true を返します。すべての NULL 値は等価と見なされます。 | ||
デフォルトまたは ASYMMETRIC キーワードが使用されている場合、value1 が value2 以上かつ value3 以下であるときに true を返します。 | ||
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 | デフォルトまたは ASYMMETRIC キーワードが使用されている場合、value1 が value2 より小さいか、value3 より大きいときに true を返します。 | |
string1 が string2 と一致する場合に true を返します。 | ||
string1 が string2 と一致しない場合に true を返します。 | ||
string1 が SQL 正規表現 string2 と一致する場合に true を返します。 | ||
string1 が SQL 正規表現 string2 と一致しない場合に true を返します。 | ||
value1 がリスト(value2、value3、…)に存在する場合に true を返します。 | ||
value1 がリスト(value2、value3、…)に存在しない場合に true を返します。 | ||
サブクエリが少なくとも 1 行を返す場合に true を返します。 | ||
値がサブクエリ結果セットのいずれかの行と等しい場合に true を返します。 | ||
値がサブクエリによって返された行のいずれにも含まれていない場合に true を返します。 | ||
論理関数 | ビット単位の AND 操作を実行します。 | |
ビット単位の NOT 操作を実行します。 | ||
ビット単位の OR 操作を実行します。 | ||
ビット単位の XOR 操作を実行します。 | ||
boolean1 または boolean2 のいずれかが true の場合に true を返します。 | ||
boolean1 と boolean2 の両方が true の場合に true を返します。 | ||
boolean が false の場合に true を返します。boolean が true の場合に false を返します。boolean が unknown の場合に unknown を返します。 | ||
boolean が false の場合に true を返します。boolean が true または unknown の場合に false を返します。 | ||
boolean が true または unknown の場合に true を返します。boolean が false の場合に false を返します。 | ||
boolean が true の場合に true を返します。boolean が false または unknown の場合に false を返します。 | ||
boolean が false または unknown の場合に true を返します。boolean が true の場合に false を返します。 | ||
boolean が unknown の場合に true を返します。boolean が true または false の場合に false を返します。 | ||
boolean が true または false の場合に true を返します。boolean が unknown の場合に false を返します。 | ||
算術関数 | numeric の値を返します。 | |
numeric の値の符号を反転した値を返します。 | ||
numeric1 と numeric2 の和を返します。 | ||
numeric1 と numeric2 の差を返します。 | ||
numeric1 を numeric2 で乗算した積を返します。 | ||
numeric1 を numeric2 で除算した商を返します。 | ||
numeric1 を numeric2 で除算した余りを返します。 | ||
numeric1 を numeric2 乗した値を返します。 | ||
numeric の絶対値を返します。 | ||
numeric の平方根を返します。 | ||
底が e の numeric の自然対数を返します。 | ||
numeric の常用対数(底が 10)を返します。 | ||
numeric の二進対数(底が 2)を返します。 | ||
入力パラメーターが 1 つの場合、numeric2 の自然対数を返します。入力パラメーターが 2 つの場合、numeric2 の底が numeric1 の対数を返します。numeric2 は 0 より大きく、numeric1 は 1 より大きい必要があります。 | ||
e を numeric 乗した値を返します。 | ||
numeric を、numeric 以上で最小の整数に切り上げます。 | ||
numeric を、numeric 以下で最大の整数に切り捨てます。 | ||
numeric の正弦を返します。 | ||
numeric の双曲正弦を返します。戻り値の型は DOUBLE です。 | ||
numeric の余弦を返します。 | ||
numeric の正接を返します。 | ||
numeric の双曲正接を返します。戻り値の型は DOUBLE です。 | ||
numeric の余接を返します。 | ||
numeric の逆正弦を返します。 | ||
numeric の逆余弦を返します。 | ||
numeric の逆正接を返します。 | ||
座標(numeric1、numeric2)の逆正接を返します。 | ||
numeric の双曲余弦を返します。戻り値の型は DOUBLE です。 | ||
ラジアンの numeric を度に変換した値を返します。 | ||
度の numeric をラジアンに変換した値を返します。 | ||
numeric の符号を返します。 | ||
numeric を小数点以下 INT 桁に丸めた値を返します。 | ||
π に極めて近い値を返します。 | ||
e に極めて近い値を返します。 | ||
[0.0, 1.0) の範囲の疑似乱数の倍精度浮動小数点数を返します。 | ||
INT を初期シードとして、[0.0, 1.0) の範囲の疑似乱数の倍精度浮動小数点数を返します。 | ||
[0, INT) の範囲の疑似乱数の整数を返します。 | ||
INT1 を初期シードとして、[0, INT2) の範囲の疑似乱数の整数を返します。 | ||
RFC 4122 Type 4 に基づく Universally Unique Identifier(UUID)文字列を返します。UUID 文字列は疑似ランダムに生成されます。 | ||
INTEGER 値の 2 進数形式の文字列表現を返します。 | ||
数値または文字列の 16 進数形式の文字列表現を返します。 | ||
指定された小数点以下の桁数で切り捨てられた数値を返します。 | ||
16 進数文字列を BINARY に変換します。 | ||
指定された百分率における expr の正確なパーセンタイル値を返します。 | ||
文字列関数 | string1 と string2 の連結を返します。 | |
string の文字数を返します。 | ||
string を大文字に変換したものを返します。 | ||
string を小文字に変換したものを返します。 | ||
string1 が string2 に最初に出現する位置(1 から始まる)を返します。string1 が見つからない場合は 0 を返します。 | ||
STRING1 で始まる、STRING1 で終わる、またはその両方の部分文字列を削除した後、STRING2 を返します。 TRAILING パラメーターを処理する際、この関数は、TRAILING パラメーターに含まれていない文字に遭遇するまで、文字列の末尾から文字を削除します。たとえば、TRIM(TRAILING 'fe' FROM 'abcdef') は 'abcd' を返します。 | ||
string の先頭の空白を削除します。 | ||
string の末尾の空白を削除します。 | ||
INT 個の string を連結して作成された文字列を返します。 | ||
文字列内のパターンを置換文字列で置き換え、結果を返します。 | ||
OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ]) | string1 の integer1 番目の位置から integer2 文字を string2 で置き換えます。デフォルトでは、integer2 は string2 の長さになります。 | |
string の integer1 番目の位置から開始し、長さが integer2 の部分文字列を返します。デフォルトでは、integer2 は integer1 の位置から文字列の末尾までの長さを指定します。 | ||
string1 内の string2 のすべての非重複する出現箇所を string3 で置き換え、結果を返します。 | ||
正規表現 string2 を使用して string1 を分割し、位置 integer の部分文字列を返します。 | ||
string の各単語の先頭文字を大文字にし、残りの文字を小文字に変換します。単語とは、英数字の連続を意味します。 | ||
複数の文字列を連結し、結果を返します。入力のいずれかが NULL の場合、NULL を返します。 | ||
区切り文字 string1 を使用して string2、string3、… を連結した文字列を返します。 | ||
string1 を string2 で左詰めし、長さが integer になるようにします。 | ||
string1 を string2 で右詰めし、長さが integer になるようにします。 | ||
Base64 を使用して string をデコードします。 | ||
Base64 を使用して string をエンコードします。 | ||
string の先頭文字の ASCII コードを返します。 | ||
integer に対応する ASCII 文字を返します。 | ||
US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16 などの指定されたエンコード形式で文字列をデコードします。 | ||
US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16 などの指定されたエンコード形式で string1 をエンコードします。 | ||
string2 が string1 に最初に出現する位置を返します。 | ||
文字列の左端から指定された長さの部分文字列を返します。 | ||
文字列の右端の整数文字を返します。 | ||
string2 の position integer 以降で string1 が最初に出現する位置を返します。 | ||
URL の特定の部分を解析し、その値を返します。 | ||
正規表現を使用して文字列内にパターンを検索し、ブール値を返します。 | ||
str 内で regex に一致する最初の部分文字列を返します。 | ||
str 内で regex に一致する最初の部分文字列の位置を返します。 | ||
str が regex パターンに一致する回数を返します。 | ||
regex 式に一致する str 内のすべての部分文字列を抽出し、regex グループ extractIndex に対応するものを返します。 | ||
string を逆順にしたものを返します。 | ||
文字列をデリミタでセグメントに分割し、指定された位置のフィールドを返します。 | ||
string1 をデリミタを使用してキーと値のペアに分割し、マップを返します。 | ||
string の integer1 番目の位置から開始し、長さが integer2 の部分文字列を返します。 | ||
printf 形式の書式設定を使用してフォーマットされた文字列を返します。 | ||
fromStr 内のすべての文字を、toStr 内の対応する文字で置き換えます。 | ||
index 番目の式を返します。index は 1 から式の数までの整数である必要があります。 | ||
str の先頭および末尾から trimStr の文字を削除します。デフォルトでは、trimStr は空白です。 | ||
expr が startExpr で始まる場合に true を返します。startExpr が空の場合も true を返します。 | ||
expr が endExpr で終わる場合に true を返します。endExpr が空の場合も true を返します。 | ||
時刻関数 | yyyy-MM-dd 形式の文字列から解析された SQL DATE 値を返します。 | |
2 つの日付値の差を計算します。 | ||
指定された日数だけ後の日付値を返します。 | ||
指定された日数だけ前の日付値を返します。 | ||
HH:mm:ss 形式の文字列から解析された SQL TIME 値を返します。 | ||
yyyy-MM-dd HH:mm:ss[.SSS] 形式の文字列から解析された SQL TIMESTAMP 値を返します。 | ||
dd hh:mm:ss.fff 形式の文字列からミリ秒単位の間隔を解析するか、yyyy-mm 形式の文字列から月単位の間隔を解析します。 | ||
現在のローカル時間を SQL TIME(0) 値として返します。 | ||
現在のローカルタイムスタンプを SQL TIMESTAMP(3) 値として返します。 | ||
現在のローカル時間を SQL TIME 値として返します。LOCALTIME と等価です。 | ||
現在のローカル日付を SQL DATE 値として返します。 | ||
現在のローカルタイムスタンプを SQL TIMESTAMP 値として返します。 | ||
現在のローカルタイムスタンプを SQL TIMESTAMP 値として返します。CURRENT_TIMESTAMP と等価です。 | ||
現在のローカルタイムスタンプを SQL TIMESTAMP 値として返します。 | ||
temporal の timeintervalunit 部分から抽出された LONG 値を返します。 | ||
SQL DATE 値の年を返します。 | ||
SQL DATE 値の四半期を返します。 | ||
SQL DATE 値の月を返します。 | ||
SQL DATE 値の年の週番号を返します。 | ||
SQL DATE 値の年の日数(1 月 1 日からの経過日数)を返します。 | ||
SQL DATE 値の月の日を返します。 | ||
SQL TIMESTAMP 値の時を返します。 | ||
SQL TIMESTAMP 値の分を返します。 | ||
SQL TIMESTAMP 値の秒を返します。 | ||
timepoint を最も近い timeintervalunit 未満に切り捨てた値を返します。 | ||
timepoint を最も近い timeintervalunit 以上に切り上げた値を返します。 | ||
(timepoint1, temporal1) と (timepoint2, temporal2) で定義された時間間隔が重なる場合に true を返します。 | ||
指定されたパターンに従って STRING 日付値をフォーマットします。 | ||
指定されたタイムゾーンおよびフォーマットで TIMESTAMP 値を STRING としてフォーマットします。 | ||
timepoint に間隔を加算して新しい timepoint を返します。間隔は timeintervalunit × interval です。 | ||
timepoint1 と timepoint2 の間の時間間隔を返します。 | ||
datetime 文字列 string1 をタイムゾーン string2 からタイムゾーン string3 に変換します。datetime 文字列 string1 はデフォルトの ISO 形式 yyyy-MM-dd HH:mm:ss である必要があります。 | ||
VARCHAR 日付値を返します。 | ||
日付値を UNIX タイムスタンプに変換します。 | ||
INT または VARCHAR 日付値を DATE データ型に変換します。 | ||
UNIX タイムスタンプを TIMESTAMP_LTZ 値に変換します。単位はミリ秒または秒です。 | ||
UTC+0 タイムゾーンおよびフォーマット string2 の string1 をタイムスタンプに変換します。デフォルトでは、string2 は yyyy-MM-dd HH:mm:ss です。 | ||
VARCHAR 日付値を指定されたタイムゾーンの TIMESTAMP 値に変換します。 | ||
時間列プロパティ rowtime の現在のウォーターマークを返します。 | ||
条件付き関数 | value がリスト(valueX_1、valueX_2、…)内のいずれかの値と一致する場合、resultX を返します。 | |
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END | conditionX が最初に true となる条件の場合、resultX を返します。 | |
value1 が value2 と等しい場合、NULL を返します。それ以外の場合は value1 を返します。 | ||
value1、value2、… のうち最初の非 NULL 値を返します。 | ||
condition が true の場合、true_value を返します。それ以外の場合は false_value を返します。 | ||
input が NULL の場合、null_replacement を返します。それ以外の場合は input を返します。 | ||
string のすべての文字がアルファベットである場合に true を返します。それ以外の場合は false を返します。 | ||
string が有効な数値として解析可能である場合に true を返します。それ以外の場合は false を返します。 | ||
string のすべての文字が数字である場合に true を返します。それ以外の場合は false を返します。 | ||
入力パラメーターのうち最大の値を返します。入力のいずれかが NULL の場合、NULL を返します。 | ||
入力パラメーターのうち最小の値を返します。入力のいずれかが NULL の場合、NULL を返します。 | ||
データ型変換関数 | 数値または文字を基数間で変換します。 | |
value を type に変換したものを返します。 | ||
input のデータ型の文字列表現を返します。 | ||
コレクション関数 | array の要素数を返します。 | |
array の INT 番目の位置にある要素を返します。 | ||
array の基数が 1 の場合、その唯一の要素を返します。 | ||
map のエントリー数を返します。 | ||
map 内の指定されたキーに関連付けられた値を返します。 | ||
JSON 関数 | 指定された文字列が有効な JSON 文字列であるかどうかを判定します。 | |
JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ]) | JSON 文字列が指定されたパス検索条件を満たすかどうかを判定します。 | |
value を JSON 文字列にシリアル化します。 | ||
JSON 文字列から指定されたパスの値を抽出します。 | ||
JSON 文字列から JSON 値を抽出します。 | ||
JSON_OBJECT([[KEY] key VALUE value]* [ { NULL | ABSENT } ON NULL ]) | キーと値のペアのリストから JSON オブジェクトを生成します。 | |
JSON_OBJECTAGG([KEY] key VALUE value [ { NULL | ABSENT } ON NULL ]) | キーと値の式を JSON オブジェクトに集約します。 | |
値のリストから JSON 配列を生成します。 | ||
アイテムを配列に集約することで、JSON オブジェクト文字列を作成できます。 | ||
文字列を二重引用符で囲んで JSON 値としてクォートします。 | ||
JSON 値への参照を解除します。 | ||
値構築関数 | -- implicit constructor with parenthesis (value1 [, value2]*) | 値のリスト(value1、value2、…)から構築された行を返します。 |
値のリスト(value1、value2、…)から構築された配列を返します。 | ||
キーと値のペアのリスト((value1, value2)、(value3, value4)、…)から構築されたマップを返します。 | ||
値取得関数 | Tuple や POJO などの複合データ型から field の値を抽出します。 | |
Tuple や POJO などの複合データ型のサブタイプを個別のフィールドに展開します。 | ||
グループ化関数 | グループ化キーの組み合わせを一意に識別する整数を返します。 | |
GROUPING(expression1 [, expression2]* ) | GROUPING_ID(expression1 [, expression2]* ) | 指定された式のグループ化ステータスを表すビットベクターを返します。 | |
ハッシュ関数 | string の MD5 ハッシュを 32 文字の 16 進数文字列として返します。 | |
string の SHA-1 ハッシュを 40 文字の 16 進数文字列として返します。 | ||
string の SHA-224 ハッシュを 56 文字の 16 進数文字列として返します。 | ||
string の SHA-256 ハッシュを 64 文字の 16 進数文字列として返します。 | ||
string の SHA-384 ハッシュを 96 文字の 16 進数文字列として返します。 | ||
string の SHA-512 ハッシュを 128 文字の 16 進数文字列として返します。 | ||
SHA-224、SHA-256、SHA-384、SHA-512 を使用してハッシュ値を返します。 | ||
Murmur32 ハッシュアルゴリズムを使用して、指定されたパラメーターの 32 ビットハッシュ値を計算します。 | ||
MURMUR_HASH_64 関数は Murmur 128 ハッシュアルゴリズムを使用して、指定されたパラメーターの 64 ビットハッシュ値を計算します。 | ||
その他 | 指定された浮動小数点数が NaN(Not a Number)であるかどうかをチェックします。この関数は Java の Double.isNaN() や Float.isNaN() の動作と同様です。 | |
split1 をペアのデリミタ、split2 をキーと値のデリミタとして文字列をキーと値のペアに分割し、指定されたキーの値を返します。 |
テーブル値関数
関数 | 説明 |
from、from+1、from+2 … to-1 のルールに基づいてパディングデータの系列を生成します。 | |
JSON 文字列から各パス文字列で表される値を取得します。 | |
split1 で指定されたキーと値のペアのデリミタに基づいて文字列をキーと値のペアに分割し、split2 で指定されたデリミタに基づいてキーと値のペアを分割し、key_name1 および key_name2 の値を返します。 | |
指定されたデリミタに基づいて文字列を部分文字列に分割し、部分文字列のリストを返します。 |
集約関数
関数 | 説明 |
COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*) | expression の非 NULL 入力行の数を、デフォルトまたは ALL キーワードが使用されている場合に返します。 |
入力行の総数を返します。 | |
expression の平均値を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に計算します。 | |
expression の合計を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
expression の最大値を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
expression の最小値を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
デフォルトで、または ALL キーワードが使用されている場合、すべての入力行における式の母集団標準偏差を返します。 説明 VVR 11.6 以降、分散および標準偏差の関数では、計算精度の向上と極端なケースにおけるエラー修正を目的として、新しいアルゴリズムが採用されます。 この変更により、ステートの互換性が失われます。これらの関数を使用するジョブは、ステートレス再起動が必要です。あるいは、パラメーター 影響を受ける関数には、 | |
expression の標本標準偏差を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
expression の母集団分散(母集団標準偏差の二乗)を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
expression の標本分散(標本標準偏差の二乗)を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
expression の複数の値を、すべての入力行に対してデフォルトまたは ALL キーワードが使用されている場合に返します。 | |
この関数は VAR_SAMP() と等価です。 | |
グループ内の値の順位を返します。 | |
グループ内の値の密な順位を返します。順位は各異なる値ごとに 1 ずつ増加します。 | |
ウィンドウパーティション内の行の連続番号(1 から始まる)を返します。 | |
ウィンドウ内で、現在の行から offset 行後の行の式の値を返します。 説明 LEAD 関数はストリーミングモードではサポートされていません。 | |
ウィンドウ内で、現在の行より offset 行前の行の expression 値を返します。 | |
文字列式の値を separator で区切って連結します。 | |
ジョブのパフォーマンスを向上させます。 | |
データストリーム内の最初の非 NULL レコードを返します。 | |
データストリーム内の最後の非 NULL レコードを返します。 |