すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:Flink CDC ビルトイン関数

最終更新日:Mar 10, 2026

このトピックでは、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)

numeric の値を小数点以下 n 桁に四捨五入して返します。

UUID()

グローバル一意識別子 (UUID) 文字列(例:3d3c68f7-f608-473f-b60c-b0c44ad4cc4e)を生成します。

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)

入力タイムスタンプを指定されたタイムゾーンで文字列としてフォーマットします。

説明
  1. フォーマット文字列は Java SimpleDateFormat と互換があります。

  2. 出力文字列のフォーマットは yyyy-MM-dd HH:mm:ss です。

DATE_FORMAT_TZ(timestamp, string1[, string2])

入力タイムスタンプを、string2 で指定されたタイムゾーンにおいて、string1 で指定されたフォーマットで文字列に変換します。

説明

フォーマット文字列は Java SimpleDateFormat と互換があります。

TIMESTAMPADD(timeintervalunit, interval, timepoint)

timepoint に timeintervalunit 単位の interval を加算した後の時刻を返します。

timeintervalunit の有効値は SECOND、MINUTE、HOUR、DAY、MONTH、YEAR です。

DATE_ADD(timestamp, integer, string)

第 1 パラメーターの timestamp を、第 3 パラメーターの string で指定されたタイムゾーンのローカル時刻に変換し、その後、第 2 パラメーターの 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 型にパースします。

説明

string2 を指定しない場合、デフォルトのフォーマットは yyyy-MM-dd です。

TO_TIMESTAMP(string1[, string2])

フォーマット文字列 string2 を使用して、タイムスタンプ文字列 string1 をタイムゾーン情報を持たない TIMESTAMP 型にパースします。

説明

string2 を指定しない場合、デフォルトのフォーマットは yyyy-MM-ddHH:mm:ss です。

TO_TIMESTAMP_LTZ(string1[, string2][, string3])

フォーマット文字列 string2 を使用して、タイムスタンプ文字列 string1 を string3 で指定されたタイムゾーンの TIMESTAMP_LTZ 型にパースします。

説明
  1. string2 を指定しない場合、デフォルトのフォーマットは yyyy-MM-dd HH:mm:ss.SSS です。

  2. string3 を指定しない場合、デフォルトのタイムゾーンは UTC です。

TO_TIMESTAMP_LTZ(bigint[, integer])

第 1 パラメーター(タイムスタンプ)を、第 2 パラメーターで指定された精度を持つ TIMESTAMP_LTZ 型に変換します。

説明

第 2 パラメーターは 0 または 3 である必要があります。

FROM_UNIXTIME(numeric[, string])

第 1 パラメーター(1970-01-01 00:00:00 UTC からの経過秒数)をタイムスタンプに変換します。結果は、第 2 パラメーターで指定されたフォーマットの文字列として返されます。

説明

string を指定しない場合、デフォルトのフォーマットは yyyy-MM-ddHH:mm:ss です。

UNIX_TIMESTAMP()

現在の UNIX タイムスタンプ(秒単位)を返します。

UNIX_TIMESTAMP(string1[, string2])

日時文字列 string1 をフォーマット string2 に変換します。

説明

射影式およびフィルター式を評価する際、各部分式は同じ時刻を返します。たとえば、NOW() AS t1, NOW() AS t2, NOW() AS t3 は、評価順序やタイミングに関係なく、常に t1t2t3 に対して同じタイムスタンプを返します。

文字列関数

関数

説明

string1 || string2

string1 と string2 を連結した文字列を返します。

説明

この演算子は論理 OR 演算子ではありません。

CHAR_LENGTH(string)

string の文字数を返します。

UPPER(string)

string を大文字に変換して返します。

LOWER(string)

string を小文字に変換して返します。

TRIM(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>) 構文を使用します。以下の変換がサポートされています。

ソース型

ターゲット型

説明

Any

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 を返します。

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 を返します。boolean が FALSE の場合は TRUE を返します。

boolean IS FALSE

boolean が TRUE の場合は FALSE を返します。boolean が FALSE の場合は TRUE を返します。

boolean IS NOT FALSE

boolean が TRUE の場合は TRUE を返します。boolean が FALSE の場合は FALSE を返します。

boolean IS TRUE

boolean が TRUE の場合は TRUE を返します。boolean が FALSE の場合は FALSE を返します。

boolean IS NOT TRUE

boolean が TRUE の場合は FALSE を返します。boolean が FALSE の場合は TRUE を返します。

条件関数

関数

説明

CASE value WHEN value1_1 [, value1_2]* THEN RESULT1 (WHEN value2_1 [, value2_2 ]* THEN result_2)* (ELSE result_z) END

WHEN 句の各 value と value が等しいかどうかを順にチェックします。最初に一致した句の RESULT を返します。

一致する句がない場合は ELSE 句の値を返します。ELSE 句がない場合は NULL を返します。

CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END

WHEN 句の各 condition が真かどうかを順にチェックします。最初に真となった条件の RESULT を返します。

どの条件も真でない場合は ELSE 句の値を返します。ELSE 句がない場合は NULL を返します。

COALESCE(value1 [, value2]*)

リスト [value1, value2, ...] の中で最初に出現する NULL でない値を返します。すべての値が NULL の場合は NULL を返します。

IF(condition, true_value, false_value)

condition が真の場合は true_value を返します。それ以外の場合は false_value を返します。

Variant 関数

Variant 関数は、Ververica Runtime (VVR) 11.6 以降のデータインジェストジョブで使用できます。

関数

説明

PARSE_JSON(json_string[, allow_duplicate_keys])

JSON 文字列を Variant にパースします。JSON 文字列が無効な場合はエラーをスローします。エラーをスローせずに NULL を返すには、TRY_PARSE_JSON 関数を使用してください。

入力 JSON 文字列に重複キーが含まれる場合、allowDuplicateKeys が true のときは同じキーを持つ最後のフィールドを保持します。allowDuplicateKeys が false のときはエラーをスローします。デフォルトでは allowDuplicateKeys は false です。

TRY_PARSE_JSON(json_string[, allow_duplicate_keys])

JSON 文字列を Variant にパースします。JSON 文字列が無効な場合は NULL を返します。NULL を返さずにエラーをスローするには、PARSE_JSON 関数を使用してください。

入力 JSON 文字列に重複キーが含まれる場合、allowDuplicateKeys が true のときは同じキーを持つ最後のフィールドを保持します。allowDuplicateKeys が false のときはエラーをスローします。デフォルトでは allowDuplicateKeys は false です。

ハッシュ関数

ハッシュ関数は、Ververica Runtime (VVR) 11.6 以降のデータインジェストジョブで使用できます。

関数

説明

MD5(string)

string の MD5 ハッシュを 32 文字の 16 進数文字列として返します。string が NULL の場合は NULL を返します。

SHA1(string)

string の SHA-1 ハッシュを 40 文字の 16 進数文字列として返します。string が NULL の場合は NULL を返します。

SHA224(string)

string の SHA-224 ハッシュを 56 文字の 16 進数文字列として返します。string が NULL の場合は NULL を返します。

SHA256(string)

string の SHA-256 ハッシュを 64 文字の 16 進数文字列として返します。string が NULL の場合は NULL を返します。

SHA384(string)

string の SHA-384 ハッシュを 96 文字の 16 進数文字列として返します。string が NULL の場合は NULL を返します。

SHA512(string)

string の SHA-512 ハッシュを 128 文字の 16 進数文字列として返します。string が NULL の場合は NULL を返します。

SHA2(string, hashLength)

SHA-2 ファミリー関数(SHA-224、SHA-256、SHA-384、SHA-512)を使用してハッシュを返します。第 1 パラメーター string は入力文字列です。第 2 パラメーター hashLength は結果のビット長(224、256、384、512)を指定します。string または hashLength が NULL の場合は NULL を返します。

ネストされたデータ型へのアクセス

[] 演算子を使用して、ARRAYMAPVARIANT などのネストされたデータフィールド内の特定の要素にアクセスできます。この機能は、Ververica Runtime (VVR) 11.6 以降で利用可能です。

アクセス方法

nest_col という名前のネストされたフィールドがあると仮定します。アクセス方法はその内部データ形式によって異なります。

  1. 配列形式 (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"}

  2. ハッシュテーブル形式 (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

戻り値の型

[] 演算子の戻り値の型は、元のネストされたフィールドの内部型によって異なります。

  1. 元のフィールド型が ARRAY[T](内部型が T)の場合。
    nest_col[integer] を使用すると、型 T の値が返されます。

  2. 元のフィールドが MAP<K, V> 型(キーは型 K、値は型 T)の場合。

    キーで要素を取得するには nest_col[string] を使用します。戻り値の型は V です。

  3. 元のフィールドのタイプは VARIANT です。

    nest_col[integer] または nest_col[string] を使用して要素にアクセスした場合の戻り値の型は常に VARIANT です。