Selain tipe data SQL Flink standar, Realtime Compute for Apache Flink mendukung konversi tipe implisit. Topik ini menjelaskan matriks dukungan konversi tipe.
Catatan penggunaan
Realtime Compute for Apache Flink mengaktifkan perilaku Legacy-Cast secara default, yang mencakup operasi cast dari konversi tipe eksplisit maupun implisit.
Deskripsi parameter
Parameter
table.exec.legacy-cast-behaviourdiperkenalkan di Flink 1.15 dan digunakan untuk memaksa konversi dari tipe data sumber ke tipe target dalam konversi tipe eksplisit maupun implisit. Perlu diperhatikan bahwa konversi tersebut dapat menyebabkan kehilangan presisi, overflow nilai, atau mengembalikan nilai null. Untuk menjaga kompatibilitas dengan versi sebelumnya, nilai default-nya adalahenabledpada Realtime Compute for Apache Flink, sedangkan nilai default pada Apache Flink adalahdisabled.Tentang CAST
Secara default, CAST mengembalikan nilai null ketika terjadi pengecualian konversi dan tidak melemparkan error eksplisit. Pada skenario yang memerlukan pemeriksaan ketat terhadap nilai abnormal, Anda dapat mengatur parameter
table.exec.legacy-cast-behaviour=disabledagar task melemparkan error eksplisit saat menghadapi pengecualian konversi data.Tentang TRY_CAST
Anda dapat menggunakan TRY_CAST untuk konversi tipe eksplisit. Fungsi ini mengembalikan null ketika terjadi pengecualian konversi dan tidak menyebabkan job gagal. Perilaku ini setara dengan menggunakan CAST ketika parameter
table.exec.legacy-cast-behaviourdiatur keenabled.
Untuk menangani nilai null, Anda dapat menggunakan sintaks konversi tipe eksplisit seperti
cast(null as target_type). Sebagai contoh, gunakancast(null as varchar). Praktik ini menghindari hasil yang tidak 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 |
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 |
Simbol dalam tabel memiliki arti sebagai berikut:
E: Hanya mendukung konversi eksplisit.
I: Mendukung konversi implisit.
-: Konversi tidak didukung.
Referensi
Untuk informasi selengkapnya tentang tipe data SQL yang didukung oleh komunitas, lihat Tipe data SQL Flink komunitas.