これらの組み込み関数を、Flink CDC データインジェストジョブの変換モジュールにおける式で使用します。
組み込み関数
Flink CDC は、変換モジュール内のプロジェクション式およびフィルター式で直接使用できる組み込み関数を提供します。
算術関数
| 関数 | 説明 |
|---|---|
numeric1 + numeric2 |
numeric1 と numeric2 の合計を返します。 |
numeric1 - numeric2 |
numeric1 から numeric2 を引いた結果を返します。 |
numeric1 * numeric2 |
numeric1 に numeric2 を掛けた結果を返します。 |
numeric1 / numeric2 |
numeric1 を numeric2 で割った結果を返します。 |
numeric1 % numeric2 |
numeric1 を numeric2 で割った余りを返します。 |
ABS(numeric) |
numeric の絶対値を返します。 |
CEIL(numeric) |
numeric 以上の最小の整数を返します。 |
FLOOR(numeric) |
numeric 以下の最大の整数を返します。 |
ROUND(numeric, int) |
数値を小数点以下 n 桁に丸めた値を返します。 |
UUID() |
3d3c68f7-f608-473f-b60c-b0c44ad4cc4e のようなグローバル一意識別子 (UUID) 文字列を生成します。 RFC 4122 タイプ 4 を使用して、疑似乱数 UUID を生成します。 |
時間関数
| 関数 | 説明 |
|---|---|
LOCALTIME |
現在のタイムゾーンのローカルタイムを返します。戻り値の型:TIME(0)。 |
LOCALTIMESTAMP |
現在のタイムゾーンのローカルタイムスタンプを返します。戻り値の型:TIMESTAMP(3)。 |
CURRENT_TIME |
現在のタイムゾーンのローカルタイムを返します。LOCALTIME と同等です。 |
CURRENT_DATE |
現在のタイムゾーンのローカル日付を返します。 |
CURRENT_TIMESTAMP |
現在のタイムゾーンのローカルタイムスタンプを返します。戻り値の型:TIMESTAMP_LTZ(3)。 |
NOW() |
現在のタイムゾーンのローカルタイムスタンプを返します。CURRENT_TIMESTAMP と同等です。 |
DATE_FORMAT(timestamp, string) |
指定されたフォーマット文字列を使用して、入力タイムスタンプをフォーマットします。フォーマット文字列は Java の SimpleDateFormat と互換性があります。 |
DATE_FORMAT_TZ(timestamp, string) |
指定されたタイムゾーンで入力タイムスタンプを文字列としてフォーマットします。フォーマット文字列は Java の SimpleDateFormat と互換性があります。出力形式:yyyy-MM-dd HH:mm:ss。 |
DATE_FORMAT_TZ(timestamp, string1[, string2]) |
入力タイムスタンプを、タイムゾーン string2 で、string1 の書式に従って文字列に変換します。フォーマット文字列は Java の SimpleDateFormat と互換性があります。 |
TIMESTAMPADD(timeintervalunit, interval, timepoint) |
timepoint に interval (timeintervalunit 単位) を加えた後のタイムポイントを返します。timeintervalunit の有効な値:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR。 |
DATE_ADD(timestamp, integer, string) |
timestamp を string で指定されたタイムゾーンのローカルタイムに変換し、integer で指定された日数を加算します。結果を yyyy-MM-dd 形式の文字列として返します。 |
TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) |
timepoint1 と timepoint2 の差を timepointunit 単位で返します。timepointunit の有効な値:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR。 |
TO_DATE(string1[, string2]) |
フォーマット文字列 string2 を使用して、日付文字列 string1 を DATE 型に解析します。デフォルトのフォーマット:yyyy-MM-dd。アップストリームデータが MySQL の DATETIME (yyyy-MM-dd HH:mm:ss) のような異なる形式を使用している場合は、実際の形式で string2 を明示的に指定する必要があります。そうでない場合、解析は失敗し、1970-01-01 のような不正な結果を返します。 |
TO_TIMESTAMP(string1[, string2]) |
フォーマット文字列 string2 を使用して、タイムスタンプ文字列 string1 をタイムゾーンなしの TIMESTAMP 型に解析します。デフォルトのフォーマット:yyyy-MM-dd HH:mm:ss。 |
TO_TIMESTAMP_LTZ(string1[, string2][, string3]) |
書式文字列 string2 とタイムゾーン string3 を使用して、タイムスタンプ文字列 string1 を TIMESTAMP_LTZ 型に解析します。デフォルトのフォーマット:yyyy-MM-dd HH:mm:ss.SSS。デフォルトのタイムゾーン:UTC。 |
TO_TIMESTAMP_LTZ(bigint[, integer]) |
タイムスタンプ (bigint) を、integer で指定された精度の TIMESTAMP_LTZ 型に変換します。integer は 0 または 3 である必要があります。 |
FROM_UNIXTIME(numeric[, string]) |
numeric (1970-01-01 00:00:00 UTC からの秒数) を、string で指定された形式のタイムスタンプ文字列に変換します。デフォルトのフォーマット:yyyy-MM-dd HH:mm:ss。 |
UNIX_TIMESTAMP() |
現在の UNIX タイムスタンプを秒単位で返します。 |
UNIX_TIMESTAMP(string1[, string2]) |
フォーマット文字列 string2 を使用して日時文字列 string1 を解析し、対応する UNIX タイムスタンプを秒単位で返します。 |
プロジェクション式とフィルター式を評価する際、各部分式は同じ時点を返します。たとえば、NOW() AS t1, NOW() AS t2, NOW() AS t3 は、評価の順序やタイミングに関係なく、t1、t2、t3 に対して常に同じタイムスタンプを返します。
文字列関数
| 関数 | 説明 |
|---|---|
string1 || string2 |
string1 と string2 の連結を返します。注:これは文字列連結演算子であり、論理和 (OR) 演算子ではありません。 |
CHAR_LENGTH(string) |
string 内の文字数を返します。 |
UPPER(string) |
string を大文字で返します。 |
LOWER(string) |
string を小文字で返します。 |
TRIM(string1) |
string1 の先頭と末尾の空白を削除します。 |
REGEXP_REPLACE(string1, string2, string3) |
string1 内で正規表現 string2 に一致するすべての部分文字列を string3 に置き換えます。たとえば、REGEXP_REPLACE('foobar', 'oo|ar', '__') は f__b__ を返します。 |
SUBSTRING(string FROM integer1 [FOR integer2]) |
string の位置 integer1 から始まる、長さ integer2 の部分文字列を返します。FOR integer2 が省略された場合、部分文字列は string の末尾まで続きます。 |
CONCAT(string1, string2, ...) |
string1、string2 などを連結した文字列を返します。たとえば、CONCAT('AA', 'BB', 'CC') は AABBCC を返します。 |
型変換関数
明示的な型変換には CAST(<expression> AS <type>) 構文を使用します。
文字列のターゲット型として VARCHAR を使用してください。 STRING は有効なターゲット型ではありません。
| ソース型 | ターゲット型 | 説明 |
|---|---|---|
| 任意 | VARCHAR |
任意の型のフィールドを文字列に変換できます。 |
NUMERIC、STRING |
BOOLEAN |
'0' または 'FALSE' 以外の文字列リテラルは、'TRUE' に変換されます。 |
NUMERIC、STRING |
TINYINT |
結果は -128 から 127 の範囲に切り捨てられます。 |
NUMERIC、STRING |
SMALLINT |
結果は -32768 から 32767 の範囲に切り捨てられます。 |
NUMERIC、STRING |
INTEGER |
結果は -2147483648 から 2147483647 の範囲に切り捨てられます。 |
NUMERIC、STRING |
BIGINT |
結果は -9223372036854775808 から 9223372036854775807 の範囲に切り捨てられます。 |
NUMERIC、STRING |
FLOAT |
|
NUMERIC |
DOUBLE |
|
NUMERIC |
DECIMAL |
|
STRING、TIMESTAMP_TZ、TIMESTAMP_LTZ |
TIMESTAMP |
文字列は有効な ISO_LOCAL_DATE_TIME 形式である必要があります。 |
比較関数
特に記載がない限り、これらの関数はいずれかの入力パラメーターが NULL の場合に NULL を返します。
| 関数 | 説明 |
|---|---|
value1 = value2 |
value1 が value2 と等しい場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 <> value2 |
value1 が value2 と等しくない場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 > value2 |
value1 が value2 より大きい場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 >= value2 |
value1 が value2 以上の場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 < value2 |
value1 が value2 より小さい場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 <= value2 |
value1 が value2 以下の場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value IS NULL |
value が NULL の場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value IS NOT NULL |
value が NULL でない場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 BETWEEN value2 AND value3 |
value1 が value2 と value3 の間 (両端を含む) にある場合は TRUE を返します。それ以外の場合は FALSE を返します。たとえば、12 BETWEEN 10 AND 15 は TRUE を返し、12 BETWEEN 15 AND 20 は FALSE を返します。 |
value1 NOT BETWEEN value2 AND value3 |
value1 が value2 と value3 の間 (両端を含む) にない場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
string1 LIKE string2 |
string1 が string2 で定義されたパターンに一致する場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
string1 NOT LIKE string2 |
string1 が string2 で定義されたパターンに一致しない場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 IN (value2 [, value3]*) |
value1 がリスト [value2, value3, ...] 内に存在する場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
value1 NOT IN (value2 [, value3]*) |
value1 がリスト [value2, value3, ...] 内に存在しない場合は TRUE を返します。それ以外の場合は FALSE を返します。 |
論理関数
| 関数 | 説明 |
|---|---|
boolean1 OR boolean2 |
boolean1 または boolean2 が TRUE の場合は TRUE を返します。 |
boolean1 AND boolean2 |
boolean1 と boolean2 の両方が TRUE の場合は TRUE を返します。 |
NOT boolean |
boolean が TRUE の場合は FALSE を、FALSE の場合は TRUE を返します。boolean が NULL の場合、結果は NULL です。 |
boolean IS FALSE |
boolean が FALSE の場合は TRUE を、TRUE または NULL の場合は FALSE を返します。 |
boolean IS NOT FALSE |
boolean が TRUE または NULL の場合は TRUE を、FALSE の場合は FALSE を返します。 |
boolean IS TRUE |
boolean が TRUE の場合は TRUE を、FALSE または NULL の場合は FALSE を返します。 |
boolean IS NOT TRUE |
boolean が FALSE または NULL の場合は TRUE を、TRUE の場合は FALSE を返します。 |
条件関数
| 関数 | 説明 |
|---|---|
CASE value WHEN value1_1 [, value1_2]* THEN result1 (WHEN value2_1 [, value2_2]* THEN result2)* (ELSE result_z) END |
WHEN 句の各値を順番にチェックし、value と等しいかどうかを判定します。最初に一致した句の結果を返します。一致する句がない場合は、ELSE の値を返します。ELSE 句がない場合は、NULL を返します。 |
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END |
WHEN 句の各条件を順番にチェックします。最初に true になった条件の結果を返します。どの条件も true でない場合は、ELSE の値を返します。ELSE 句がない場合は、NULL を返します。 |
COALESCE(value1 [, value2]*) |
リスト [value1, value2, ...] 内の最初の NULL でない値を返します。すべての値が NULL の場合は NULL を返します。 |
IF(condition, true_value, false_value) |
condition が true の場合は true_value を返します。それ以外の場合は false_value を返します。 |
JSON 関数
VARIANT 型および関連関数は、Ververica Runtime (VVR) 11.6 以降のデータインジェストジョブで利用できます。
| 関数 | 説明 |
|---|---|
PARSE_JSON(json_string[, allow_duplicate_keys]) |
JSON 文字列を解析して VARIANT に変換します。JSON 文字列が無効な場合はエラーをスローします。代わりに NULL を返すには、TRY_PARSE_JSONallowDuplicateKeys = false を使用します。入力に重複キーが含まれている場合、allowDuplicateKeys が であれば、パーサーは同じキーを持つ最後のフィールドを保持します。 の場合はエラーをスローします。デフォルト:。 |
TRY_PARSE_JSON(json_string[, allow_duplicate_keys]) |
JSON 文字列を解析して VARIANT に変換します。JSON 文字列が無効な場合は NULL を返します。代わりにエラーをスローするには、PARSE_JSONallowDuplicateKeys = false を使用します。入力に重複キーが含まれている場合、allowDuplicateKeys が であれば、パーサーは同じキーを持つ最後のフィールドを保持します。 の場合はエラーをスローします。デフォルト:。 |
|
JSON_EXISTS(json_string, json_path) |
JSON 文字列内に指定されたパスが存在するかどうかを確認します。例:
パスは次の記号をサポートしています:
説明
Ververica Runtime (VVR) 11.7 以降でのみサポートされています。 |
|
JSON_VALUE(json_string, json_path) |
JSON 文字列から、指定されたパスにあるオブジェクトを抽出します。スカラー値とオブジェクト値の両方をサポートします。 説明
Ververica Runtime (VVR) 11.7 以降でのみサポートされています。 |
ハッシュ関数
ハッシュ関数は、Ververica Runtime (VVR) 11.6 以降のデータインジェストジョブで利用できます。すべてのハッシュ関数は、入力文字列が NULL の場合、NULL を返します。
| 関数 | 説明 |
|---|---|
MD5(string) |
string の MD5 ハッシュを 32 文字の 16 進数文字列として返します。 |
SHA1(string) |
string の SHA-1 ハッシュを 40 文字の 16 進数文字列として返します。 |
SHA224(string) |
string の SHA-224 ハッシュを 56 文字の 16 進数文字列として返します。 |
SHA256(string) |
string の SHA-256 ハッシュを 64 文字の 16 進数文字列として返します。 |
SHA384(string) |
string の SHA-384 ハッシュを 96 文字の 16 進数文字列として返します。 |
SHA512(string) |
string の SHA-512 ハッシュを 128 文字の 16 進数文字列として返します。 |
SHA2(string, hashLength) |
SHA-2 ファミリー関数を使用してハッシュを返します。hashLength は結果のビット長 (224、256、384、または 512) を指定します。string または hashLength が NULL の場合は NULL を返します。 |
ネストされたデータ型へのアクセス
[] 演算子を使用して、ARRAY、MAP、または VARIANT 型のネストされたフィールド内の要素にアクセスします。この機能は、Ververica Runtime (VVR) 11.6 以降で利用できます。
アクセス方法
nest_col という名前のフィールドを使用します。
配列形式 (ARRAY または VARIANT 配列)
nest_col[integer] を使用して、指定されたインデックスの要素を取得します。配列のインデックスは 1 から始まります。
例:nest_col が [{"id": 1, "name": "Project A"}, {"id": 2, "name": "Project B"}] の場合、nest_col[1] は {"id": 1, "name": "Project A"} を返します。
ハッシュテーブル形式 (MAP または VARIANT オブジェクト)
nest_col[string] を使用して、指定されたキーの値を取得します。
例:nest_col が {"id": 1, "name": "Project A"} の場合、nest_col['id'] は 1 を返します。
深くネストされたフィールド
[] 演算子を連結して、深くネストされた要素にアクセスします。
例:nest_col が [{"id": 1, "name": "Project A"}, {"id": 2, "name": "Project B"}] の場合、nest_col[1]['id'] は 1 を返します。
戻り値の型
[] の戻り値の型は、元のフィールドの型によって異なります:
| 元のフィールドの型 | アクセス構文 | 戻り値の型 |
|---|---|---|
ARRAY[T] |
nest_col[integer] |
T |
MAP<K, V> |
nest_col[string] |
V |
VARIANT |
nest_col[integer] または nest_col[string] |
VARIANT |