En plus des types de données SQL Apache Flink communautaires, Realtime Compute for Apache Flink prend en charge les conversions de types implicites. Cette rubrique présente la matrice de prise en charge des conversions de types.
Points d'attention
-
Par défaut, Realtime Compute for Apache Flink active le comportement Legacy-Cast. Ce comportement s'applique aux opérations de cast générées par les conversions de types explicites et implicites.
-
Description du paramètre
Introduit dans la version 1.15 de Flink communautaire, le paramètre
table.exec.legacy-cast-behaviourforce les conversions d'un type de données source vers un type cible lors des conversions explicites et implicites. Notez que ces conversions peuvent entraîner une troncature de précision, un dépassement de valeur ou le retour de valeurs null. Pour assurer la rétrocompatibilité, la valeur par défaut sur le cloud estenabled, tandis que celle d'Apache Flink estdisabled. -
À propos de CAST
Par défaut, CAST gère les exceptions de conversion en retournant des valeurs null sans lever d'erreurs explicites. Dans les scénarios nécessitant une vérification stricte des exceptions, définissez
table.exec.legacy-cast-behaviour=disabledafin que les jobs lèvent des erreurs explicites lorsqu'ils rencontrent des conversions de données anormales. -
À propos de TRY_CAST
Utilisez TRY_CAST au besoin pour les conversions de types explicites. Cette fonction retourne null lorsqu'une exception de conversion survient, sans provoquer d'erreurs entraînant l'échec du job. Cela équivaut à utiliser CAST avec le paramètre
table.exec.legacy-cast-behaviourdéfini surenabled.
-
Pour les valeurs null, utilisez une syntaxe de conversion explicite telle que
cast(null as target_type), par exemplecast(null as varchar). Vous évitez ainsi des résultats inattendus comme la chaîne « NULL » ou des exceptions de conversion.
Matrice de prise en charge des conversions de types
|
Type source\Type cible |
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 |
Les symboles sont définis comme suit :
E : Seule la conversion de type explicite est prise en charge.
I : La conversion de type implicite est prise en charge.
: La conversion de type n'est pas prise en charge.
Références
Pour consulter les types de données SQL pris en charge par la communauté Apache Flink, reportez-vous à Types de données SQL Flink communautaires.