Selain tipe data SQL Apache Flink komunitas, Realtime Compute for Apache Flink mendukung konversi tipe implisit. Topik ini menjelaskan matriks dukungan konversi tipe.
Pertimbangan
-
Realtime Compute for Apache Flink mengaktifkan perilaku Legacy-Cast secara default, yang berlaku untuk operasi cast yang dihasilkan baik oleh konversi tipe eksplisit maupun implisit.
-
Deskripsi parameter
Parameter
table.exec.legacy-cast-behaviourdiperkenalkan di Flink 1.15 komunitas dan digunakan dalam konversi tipe eksplisit maupun implisit untuk memaksa konversi dari tipe data sumber ke tipe target. Perlu diperhatikan bahwa konversi tersebut dapat menyebabkan pemotongan presisi, overflow nilai, atau pengembalian null. Untuk kompatibilitas mundur, nilai default di cloud adalahenabled, sedangkan nilai default di Apache Flink adalahdisabled. -
Tentang CAST
CAST menangani pengecualian konversi dengan mengembalikan nilai null secara default tanpa melemparkan error eksplisit. Dalam skenario yang memerlukan pemeriksaan pengecualian ketat, Anda dapat mengatur
table.exec.legacy-cast-behaviour=disabledagar Pekerjaan melemparkan error eksplisit saat menghadapi konversi data abnormal. -
Tentang TRY_CAST
TRY_CAST dapat digunakan sesuai kebutuhan dalam konversi tipe eksplisit. TRY_CAST mengembalikan null ketika terjadi pengecualian konversi tanpa melemparkan error yang menyebabkan kegagalan Pekerjaan. Hal ini setara dengan menggunakan CAST dengan parameter
table.exec.legacy-cast-behaviourdiatur keenabled.
-
-
Untuk nilai null, gunakan sintaks konversi tipe eksplisit seperti
cast(null as target_type), misalnya,cast(null as varchar). Pendekatan ini mencegah hasil konversi tak terduga seperti string "NULL" atau pengecualian konversi.
Matriks Dukungan Konversi Tipe
|
Tipe Input\Tipe Target |
null |
boolean |
tinyint |
smallint |
int |
bigint |
decimal |
float |
double |
interval |
date |
time |
timestamp |
[var]char |
[var]binary |
variant |
bitmap |
image |
|
null |
I |
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 |
- |
|
image |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
E |
E |
- |
- |
I |
Simbol-simbol tersebut didefinisikan sebagai berikut:
-
E: Hanya konversi tipe eksplisit yang didukung.
-
I: Konversi tipe implisit didukung.
-
-: Konversi tipe tidak didukung.
Referensi
Untuk tipe data SQL yang didukung oleh komunitas Apache Flink, lihat Tipe data SQL Flink Komunitas.