Realtime Compute for Apache Flink は、標準の Flink SQL データの型に加えて、暗黙の型変換をサポートしています。本トピックでは、型変換のサポートマトリックスについて説明します。
使用上の注意
Realtime Compute for Apache Flink は、デフォルトで、明示的および暗黙的な型変換から生じるキャスト操作を含む Legacy-Cast 動作を有効にします。
パラメーターの説明
table.exec.legacy-cast-behaviourパラメーターは Flink 1.15 で導入されました。このパラメーターは、明示的および暗黙の型変換において、ソースデータの型からターゲットの型へのキャストを強制するために使用されます。この変換により、精度の低下、値のオーバーフロー、または NULL 値が返される可能性がある点にご注意ください。以前のバージョンとの互換性を確保するため、Realtime Compute for Apache Flink のデフォルト値はenabledです。Apache Flink のデフォルト値はdisabledです。CAST について
デフォルトでは、CAST は変換例外が発生した際に NULL 値を返し、明示的なエラーをスローしません。異常値に対して厳密なチェックが必要なシナリオでは、
table.exec.legacy-cast-behaviour=disabledパラメーターを設定することで、データ変換例外が発生した際にタスクが明示的なエラーをスローするようにできます。TRY_CAST について
TRY_CAST は明示的な型変換に使用できます。変換例外が発生した場合、null を返し、ジョブを失敗させません。この動作は、
table.exec.legacy-cast-behaviourパラメーターがenabledに設定されている場合に CAST を使用するのと同等です。
NULL 値を処理するには、
cast(null as target_type)のような明示的な型変換の構文を使用できます。例えば、cast(null as varchar)を使用します。この実践により、"NULL" 文字列や変換例外といった予期しない結果を回避できます。
型変換サポートマトリックス
入力型\ターゲットの型 | null | boolean | tinyint | smallint | int | bigint | decimal | float | double | interval | date | time | timestamp | [var]char | [var]binary | variant | bitmap |
null | I | I | I | I | I | I | I | I | I | I | I | I | I | I | I | I | I |
boolean | - | I | E | E | E | E | E | E | E | - | - | - | - | I | - | E | - |
tinyint | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
smallint | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
int | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
bigint | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
decimal | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
float | - | E | I | I | I | I | I | I | I | - | - | - | E | I | - | E | - |
double | - | E | I | I | I | I | I | I | I | - | - | - | E | I | - | E | - |
interval | - | - | E | E | E | E | E | - | - | I | - | - | - | E | - | E | - |
date | - | - | - | - | - | - | - | - | - | - | I | - | I | I | - | E | - |
time | - | - | - | - | - | - | - | - | - | - | - | I | E | I | - | E | - |
timestamp | - | - | E | E | E | E | E | E | E | - | I | E | I | I | - | E | - |
[var]char | - | E | I | I | I | I | I | I | I | I | I | I | I | I | I | E | - |
[var]binary | - | - | - | - | - | - | - | - | - | - | E | E | E | I | I | E | - |
variant | - | E | E | E | E | E | E | E | E | E | E | E | E | E | E | I | - |
bitmap | - | - | - | - | - | - | - | - | - | - | - | - | - | E | E | - | I |
表内の記号は次の意味を表します:
E:明示的な変換のみサポート
I:暗黙の変換をサポート
-:変換は非サポート
関連ドキュメント
コミュニティでサポートされている SQL データの型については、「コミュニティ Flink SQL データの型」をご参照ください。