Realtime Compute for Apache Flink は、Apache Flink コミュニティ版の SQL データ型に加えて、暗黙的な型変換もサポートしています。このトピックでは、型変換のサポートマトリックスについて説明します。
注意事項
-
Realtime Compute for Apache Flink は、デフォルトでレガシーキャストの動作を有効にしています。この動作は、明示的な型変換と暗黙的な型変換の両方によって生成されるキャスト操作に適用されます。
-
パラメーターの説明
table.exec.legacy-cast-behaviourパラメーターは、コミュニティ Flink 1.15 で導入されました。このパラメーターは、明示的および暗黙的な型変換において、ソースデータ型をターゲット型へ強制的に変換するために使用されます。変換によって、精度の切り捨て、値のオーバーフロー、または NULL の返却となる可能性があることにご注意ください。下位互換性のため、本サービスでのデフォルト値は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 |
ブール型 |
tinyint |
smallint |
int |
bigint |
decimal |
float |
double |
interval |
date |
time |
タイムスタンプ |
[var]char |
[var]binary |
variant |
ビットマップ |
image |
|
null |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
I |
|
ブール型 |
- |
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 |
- |
- |
|
タイムスタンプ |
- |
- |
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 |
- |
- |
|
ビットマップ |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
E |
E |
- |
I |
- |
|
image |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
E |
E |
- |
- |
I |
記号の定義は次のとおりです。
-
E :明示的な型変換のみをサポートしています。
-
I :暗黙の型変換をサポートしています。
-
- :型変換はサポートしていません。
参考
Apache Flink コミュニティでサポートされている SQL データ型については、「コミュニティ Flink SQL データ型」をご参照ください。