Utilisez ces fonctions intégrées dans les expressions du module de transformation pour les travaux d'ingestion de données Flink CDC.
Fonctions intégrées
Flink CDC met à disposition des fonctions intégrées utilisables directement dans les expressions de projection et de filtrage au sein du module de transformation.
Fonctions arithmétiques
| Fonction | Description |
|---|---|
numeric1 + numeric2 |
Renvoie la somme de numeric1 et numeric2. |
numeric1 - numeric2 |
Renvoie la différence entre numeric1 et numeric2. |
numeric1 * numeric2 |
Renvoie le produit de numeric1 par numeric2. |
numeric1 / numeric2 |
Renvoie le quotient de numeric1 par numeric2. |
numeric1 % numeric2 |
Renvoie le reste de la division de numeric1 par numeric2. |
ABS(numeric) |
Renvoie la valeur absolue de numeric. |
CEIL(numeric) |
Renvoie le plus petit entier supérieur ou égal à numeric. |
FLOOR(numeric) |
Renvoie le plus grand entier inférieur ou égal à numeric. |
ROUND(numeric, int) |
Renvoie une valeur numérique arrondie à n décimales. |
UUID() |
Génère un identifiant unique universel (UUID) sous forme de chaîne, par exemple 3d3c68f7-f608-473f-b60c-b0c44ad4cc4e. Utilise le type 4 de la norme RFC 4122 pour générer des UUID pseudo-aléatoires. |
Fonctions temporelles
| Fonction | Description |
|---|---|
LOCALTIME |
Renvoie l'heure locale du fuseau horaire actuel. Type de retour : TIME(0). |
LOCALTIMESTAMP |
Renvoie l'horodatage local du fuseau horaire actuel. Type de retour : TIMESTAMP(3). |
CURRENT_TIME |
Renvoie l'heure locale du fuseau horaire actuel. Équivalent à LOCALTIME. |
CURRENT_DATE |
Renvoie la date locale du fuseau horaire actuel. |
CURRENT_TIMESTAMP |
Renvoie l'horodatage local du fuseau horaire actuel. Type de retour : TIMESTAMP_LTZ(3). |
NOW() |
Renvoie l'horodatage local du fuseau horaire actuel. Équivalent à CURRENT_TIMESTAMP. |
DATE_FORMAT(timestamp, string) |
Formate l'horodatage d'entrée selon la chaîne de format spécifiée. La chaîne de format est compatible avec Java SimpleDateFormat. |
DATE_FORMAT_TZ(timestamp, string) |
Formate l'horodatage d'entrée en une chaîne dans le fuseau horaire spécifié. La chaîne de format est compatible avec Java SimpleDateFormat. Format de sortie : yyyy-MM-dd HH:mm:ss. |
DATE_FORMAT_TZ(timestamp, string1[, string2]) |
Convertit l'horodatage d'entrée en une chaîne formatée selon string1 dans le fuseau horaire string2. La chaîne de format est compatible avec Java SimpleDateFormat. |
TIMESTAMPADD(timeintervalunit, interval, timepoint) |
Renvoie le point temporel obtenu après ajout de l'intervalle (en unités timeintervalunit) au point temporel timepoint. Valeurs valides pour timeintervalunit : SECOND, MINUTE, HOUR, DAY, MONTH, YEAR. |
DATE_ADD(timestamp, integer, string) |
Convertit l'horodatage en heure locale dans le fuseau horaire spécifié par string, puis ajoute le nombre de jours indiqué par integer. Renvoie le résultat sous forme de chaîne au format yyyy-MM-dd. |
TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) |
Renvoie la différence entre timepoint1 et timepoint2 en unités timepointunit. Valeurs valides pour timepointunit : SECOND, MINUTE, HOUR, DAY, MONTH, YEAR. |
TO_DATE(string1[, string2]) |
Analyse la chaîne de date string1 en un type DATE à l'aide de la chaîne de format string2. Format par défaut : yyyy-MM-dd. Si les données amont utilisent un format différent, tel que MySQL DATETIME (yyyy-MM-dd HH:mm:ss), vous devez spécifier explicitement string2 avec le format réel. Sinon, l'analyse échoue et renvoie un résultat incorrect tel que 1970-01-01. |
TO_TIMESTAMP(string1[, string2]) |
Analyse la chaîne d'horodatage string1 en un type TIMESTAMP sans fuseau horaire à l'aide de la chaîne de format string2. Format par défaut : yyyy-MM-ddHH:mm:ss. |
TO_TIMESTAMP_LTZ(string1[, string2][, string3]) |
Analyse la chaîne d'horodatage string1 en un type TIMESTAMP_LTZ dans le fuseau horaire string3 à l'aide de la chaîne de format string2. Format par défaut : yyyy-MM-dd HH:mm:ss.SSS. Fuseau horaire par défaut : UTC. |
TO_TIMESTAMP_LTZ(bigint[, integer]) |
Convertit un horodatage (bigint) en TIMESTAMP_LTZ avec la précision spécifiée par integer. L'entier doit être 0 ou 3. |
FROM_UNIXTIME(numeric[, string]) |
Convertit numeric (secondes écoulées depuis 1970-01-01 00:00:00 UTC) en une chaîne d'horodatage au format spécifié par string. Format par défaut : yyyy-MM-ddHH:mm:ss. |
UNIX_TIMESTAMP() |
Renvoie l'horodatage UNIX actuel en secondes. |
UNIX_TIMESTAMP(string1[, string2]) |
Analyse la chaîne datetime string1 à l'aide de la chaîne de format string2 et renvoie l'horodatage UNIX correspondant en secondes. |
Lors de l'évaluation des expressions de projection et de filtrage, chaque sous-expression renvoie le même point temporel. Par exemple, NOW() AS t1, NOW() AS t2, NOW() AS t3 renvoie toujours le même horodatage pour t1, t2 et t3, indépendamment de l'ordre ou du moment de l'évaluation.
Fonctions de chaîne
| Fonction | Description | ||
|---|---|---|---|
`string1 |
string2` |
Renvoie la concaténation de string1 et string2. Remarque : il s'agit de l'opérateur de concaténation de chaînes, et non de l'opérateur logique OU. |
|
CHAR_LENGTH(string) |
Renvoie le nombre de caractères dans string. | ||
UPPER(string) |
Renvoie string en majuscules. | ||
LOWER(string) |
Renvoie string en minuscules. | ||
TRIM(string1) |
Supprime les espaces de début et de fin de string1. | ||
REGEXP_REPLACE(string1, string2, string3) |
Remplace toutes les sous-chaînes de string1 correspondant à l'expression régulière string2 par string3. Par exemple, `REGEXP_REPLACE('foobar', 'oo |
ar', '__')` renvoie |
|
SUBSTRING(string FROM integer1 [FOR integer2]) |
Renvoie la sous-chaîne de string commençant à la position integer1 et se terminant à la position integer2. Si FOR integer2 est omis, la sous-chaîne s'étend jusqu'à la fin de string. |
||
CONCAT(string1, string2, ...) |
Renvoie une nouvelle chaîne formée par la concaténation de string1, string2, etc. Par exemple, CONCAT('AA', 'BB', 'CC') renvoie AABBCC. |
Fonctions de conversion de type
Utilisez la syntaxe CAST(<expression> AS <type>) pour convertir explicitement les types.
Utilisez VARCHAR comme type cible pour les chaînes. STRING n'est pas un type cible valide.
| Type source | Type cible | Description |
|---|---|---|
| Tout | VARCHAR |
Les champs de tout type peuvent être convertis en chaînes. |
NUMERIC, STRING |
BOOLEAN |
Tout littéral de chaîne qui n'est pas '0' ou 'FALSE' est converti en 'TRUE'. |
NUMERIC, STRING |
TINYINT |
Le résultat est tronqué à la plage -128 à 127. |
NUMERIC, STRING |
SMALLINT |
Le résultat est tronqué à la plage -32768 à 32767. |
NUMERIC, STRING |
INTEGER |
Le résultat est tronqué à la plage -2147483648 à 2147483647. |
NUMERIC, STRING |
BIGINT |
Le résultat est tronqué à la plage -9223372036854775808 à 9223372036854775807. |
NUMERIC, STRING |
FLOAT |
|
NUMERIC |
DOUBLE |
|
NUMERIC |
DECIMAL |
|
STRING, TIMESTAMP_TZ, TIMESTAMP_LTZ |
TIMESTAMP |
La chaîne doit être dans un format ISO_LOCAL_DATE_TIME valide. |
Fonctions de comparaison
Ces fonctions renvoient NULL lorsque l'un des paramètres d'entrée est NULL, sauf indication contraire.
| Fonction | Description |
|---|---|
value1 = value2 |
Renvoie TRUE si value1 est égal à value2. Sinon, renvoie FALSE. |
value1 <> value2 |
Renvoie TRUE si value1 est différent de value2. Sinon, renvoie FALSE. |
value1 > value2 |
Renvoie TRUE si value1 est supérieur à value2. Sinon, renvoie FALSE. |
value1 >= value2 |
Renvoie TRUE si value1 est supérieur ou égal à value2. Sinon, renvoie FALSE. |
value1 < value2 |
Renvoie TRUE si value1 est inférieur à value2. Sinon, renvoie FALSE. |
value1 <= value2 |
Renvoie TRUE si value1 est inférieur ou égal à value2. Sinon, renvoie FALSE. |
value IS NULL |
Renvoie TRUE si value est NULL. Sinon, renvoie FALSE. |
value IS NOT NULL |
Renvoie TRUE si value n'est pas NULL. Sinon, renvoie FALSE. |
value1 BETWEEN value2 AND value3 |
Renvoie TRUE si value1 est compris entre value2 et value3 (inclus). Sinon, renvoie FALSE. Par exemple, 12 BETWEEN 10 AND 15 renvoie TRUE ; 12 BETWEEN 15 AND 20 renvoie FALSE. |
value1 NOT BETWEEN value2 AND value3 |
Renvoie TRUE si value1 n'est pas compris entre value2 et value3 (inclus). Sinon, renvoie FALSE. |
string1 LIKE string2 |
Renvoie TRUE si l'expression régulière définie par string2 est trouvée dans string1 (correspondance de sous-chaîne). Sinon, renvoie FALSE. |
string1 NOT LIKE string2 |
Renvoie TRUE si l'expression régulière définie par string2 n'est pas trouvée dans string1. Sinon, renvoie FALSE. |
value1 IN (value2 [, value3]*) |
Renvoie TRUE si value1 figure dans la liste [value2, value3, ...]. Sinon, renvoie FALSE. |
value1 NOT IN (value2 [, value3]*) |
Renvoie TRUE si value1 ne figure pas dans la liste [value2, value3, ...]. Sinon, renvoie FALSE. |
La sémantique de correspondance de LIKE et NOT LIKE diffère de la norme SQL sur deux points importants :
• Le modèle est une expression régulière Java, et non les caractères génériques SQL % et _. % et _ sont traités comme des littéraux regex et n'agissent pas comme des caractères génériques.
• **La correspondance utilise la sémantique de sous-chaîne (méthode Java regex find())**. Le modèle doit seulement apparaître à une certaine position dans la chaîne pour renvoyer TRUE ; une correspondance sur toute la chaîne n'est pas requise. Par exemple, col LIKE 'V.*' correspond à V123, ABC_V, ABC_V123 et à toute chaîne contenant V, ce qui équivaut à col LIKE '%V%' en SQL.
Pour obtenir une sémantique strictement équivalente à SQL LIKE, utilisez les ancres ^ et $ pour contraindre les positions de correspondance, comme illustré ci-dessous :
| Syntaxe SQL | Regex CDC équivalente | Signification |
|---|---|---|
col LIKE 'HSRS%' |
col LIKE '^HSRS' |
Commence par HSRS (HSRS peut ne rien suivre) |
col LIKE '%HSRS' |
col LIKE 'HSRS$' |
Se termine par HSRS |
col LIKE '%HSRS%' |
col LIKE 'HSRS' |
Contient HSRS |
col LIKE 'HSRS' |
col LIKE '^HSRS$' |
Égal exactement à HSRS |
col LIKE 'H_SRS' |
col LIKE '^H.SRS$' |
H suivi d'un seul caractère quelconque, puis SRS |
| (Pas d'équivalent SQL direct) | col LIKE '^V.+' |
Commence par V et comporte au moins un caractère après V |
Fonctions logiques
| Fonction | Description |
|---|---|
boolean1 OR boolean2 |
Renvoie TRUE si boolean1 ou boolean2 est TRUE. |
boolean1 AND boolean2 |
Renvoie TRUE si boolean1 et boolean2 sont tous deux TRUE. |
NOT boolean |
Renvoie FALSE si boolean est TRUE. Renvoie TRUE si boolean est FALSE. |
boolean IS FALSE |
Renvoie FALSE si boolean est TRUE. Renvoie TRUE si boolean est FALSE. |
boolean IS NOT FALSE |
Renvoie TRUE si boolean est TRUE. Renvoie FALSE si boolean est FALSE. |
boolean IS TRUE |
Renvoie TRUE si boolean est TRUE. Renvoie FALSE si boolean est FALSE. |
boolean IS NOT TRUE |
Renvoie FALSE si boolean est TRUE. Renvoie TRUE si boolean est FALSE. |
Fonctions conditionnelles
| Fonction | Description |
|---|---|
CASE value WHEN value1_1 [, value1_2]* THEN result1 (WHEN value2_1 [, value2_2]* THEN result2)* (ELSE result_z) END |
Vérifie si value est égal à chaque valeur des clauses WHEN dans l'ordre. Renvoie le résultat de la première clause correspondante. Si aucune clause ne correspond, renvoie la valeur ELSE. S'il n'y a pas de clause ELSE, renvoie NULL. |
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END |
Vérifie chaque condition des clauses WHEN dans l'ordre. Renvoie le résultat de la première condition vraie. Si aucune condition n'est vraie, renvoie la valeur ELSE. S'il n'y a pas de clause ELSE, renvoie NULL. |
COALESCE(value1 [, value2]*) |
Renvoie la première valeur non NULL de la liste [value1, value2, ...]. Renvoie NULL si toutes les valeurs sont NULL. |
IF(condition, true_value, false_value) |
Renvoie true_value si la condition est vraie. Sinon, renvoie false_value. |
Fonctions JSON
Les types VARIANT et les fonctions associées sont disponibles dans les travaux d'ingestion de données à partir de Ververica Runtime (VVR) 11,6.
| Fonction | Description |
|---|---|
PARSE_JSON(json_string[, allow_duplicate_keys]) |
Analyse une chaîne JSON en un VARIANT. Génère une erreur si la chaîne JSON n'est pas valide. Pour renvoyer NULL à la place, utilisez TRY_PARSE_JSON. Lorsque l'entrée contient des clés en double, l'analyseur conserve le dernier champ ayant la même clé si allowDuplicateKeys est vrai, ou génère une erreur si c'est faux. Par défaut : allowDuplicateKeys = false. |
TRY_PARSE_JSON(json_string[, allow_duplicate_keys]) |
Analyse une chaîne JSON en un VARIANT. Renvoie NULL si la chaîne JSON n'est pas valide. Pour générer une erreur à la place, utilisez PARSE_JSON. Lorsque l'entrée contient des clés en double, l'analyseur conserve le dernier champ ayant la même clé si allowDuplicateKeys est vrai, ou génère une erreur si c'est faux. Par défaut : allowDuplicateKeys = false. |
|
JSON_EXISTS(json_string, json_path) |
Vérifie si le chemin spécifié existe dans la chaîne JSON. Exemple :
Le chemin prend en charge les symboles suivants :
Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.7 et versions ultérieures. |
|
JSON_VALUE(json_string, json_path) |
Extrait l'objet situé au chemin spécifié de la chaîne JSON. Prend en charge les valeurs scalaires et les valeurs d'objet. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.7 et versions ultérieures. |
Fonctions de hachage
Les fonctions de hachage sont disponibles dans les travaux d'ingestion de données à partir de Ververica Runtime (VVR) 11,6. Toutes les fonctions de hachage renvoient NULL si la chaîne d'entrée est NULL.
| Fonction | Description |
|---|---|
MD5(string) |
Renvoie le hachage MD5 de string sous forme de chaîne hexadécimale de 32 caractères. |
SHA1(string) |
Renvoie le hachage SHA-1 de string sous forme de chaîne hexadécimale de 40 caractères. |
SHA224(string) |
Renvoie le hachage SHA-224 de string sous forme de chaîne hexadécimale de 56 caractères. |
SHA256(string) |
Renvoie le hachage SHA-256 de string sous forme de chaîne hexadécimale de 64 caractères. |
SHA384(string) |
Renvoie le hachage SHA-384 de string sous forme de chaîne hexadécimale de 96 caractères. |
SHA512(string) |
Renvoie le hachage SHA-512 de string sous forme de chaîne hexadécimale de 128 caractères. |
SHA2(string, hashLength) |
Renvoie un hachage à l'aide d'une fonction de la famille SHA-2. hashLength spécifie la longueur en bits du résultat : 224, 256, 384 ou 512. Renvoie NULL si string ou hashLength est NULL. |
Fonctions IA
À partir de Ververica Runtime (VVR) 11.8.0 preview2, le module Transform de CDC YAML prend en charge les fonctions IA dans les expressions projection. Avant d'utiliser ces fonctions, activez le service Flink AI (modèles intégrés).
|
Fonction |
Signature |
Champs de retour |
Objectif |
|
AI_COMPLETE |
|
|
Génération de texte à usage général. |
|
|
|
Classification de texte. |
|
|
|
|
Traduction de texte. |
|
|
|
|
Résumé de texte. |
|
|
|
|
Analyse des sentiments. |
|
|
|
|
Extraction d'informations structurées. |
|
|
|
|
Masquage des informations sensibles. |
|
|
AI_EMBED |
|
|
Convertit le texte en vecteurs. Cette fonction convient à l'étiquetage de jeux de données multimodaux, au filtrage et à la récupération RAG, au remplissage rétroactif des fonctionnalités et à des scénarios similaires. Remarque
Disponible dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
|
AI_IMAGE_COMPLETE |
|
|
Génère du texte à partir d'une image et d'une invite. Cette fonction convient à la reconnaissance du contenu d'image, à l'extraction d'informations, à la classification et à des scénarios similaires. Remarque
Disponible dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
|
AI_IMAGE_EMBED |
|
|
Convertit les images en vecteurs. Cette fonction convient à l'étiquetage de jeux de données multimodaux, au filtrage et à la récupération RAG, au remplissage rétroactif des fonctionnalités et à des scénarios similaires. Remarque
Disponible dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
Dans une expression projection, utilisez ['fieldName'] pour accéder à un champ de retour. Exemple : AI_COMPLETE('mymodel', content, '')['result'].
Pour des instructions détaillées et des exemples de fonctions IA, consultez Annotation intelligente de texte par IA et Configurer et appeler la fonction IA.
Fonctions multimodales
|
Signature de fonction |
Type de retour |
Description |
|
FETCH_CONTENT(uri) |
BYTES |
Récupère le contenu binaire à partir de l'URI spécifié. Par défaut, une requête HTTP échouée fait l'objet de 3 nouvelles tentatives. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.8 et versions ultérieures. |
|
FETCH_CONTENT(uri, httpRetryCount) |
BYTES |
Récupère le contenu binaire à partir de l'URI spécifié et indique le nombre de tentatives pour les requêtes HTTP. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.8 et versions ultérieures. |
|
FFMPEG_VIDEO_FILTER(content, filters) |
BYTES |
Applique des filtres vidéo FFmpeg à une image ou une vidéo. Les images sont produites au format PNG par défaut et les vidéos au format MP4 par défaut. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
|
FFMPEG_VIDEO_FILTER(content, filters, outputExtension) |
BYTES |
Applique des filtres vidéo FFmpeg à une image ou une vidéo et indique le format de sortie. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
|
FFMPEG_AUDIO_FILTER(content, filters) |
BYTES |
Applique des filtres audio FFmpeg à un flux audio. La sortie est au format WAV par défaut. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
|
FFMPEG_AUDIO_FILTER(content, filters, outputExtension) |
BYTES |
Applique des filtres audio FFmpeg à un flux audio et indique le format de sortie. Remarque
Pris en charge uniquement dans Ververica Runtime (VVR) 11.9 et versions ultérieures. |
Accès aux types de données imbriqués
Utilisez l'opérateur [] pour accéder aux éléments des champs imbriqués de type ARRAY, MAP ou VARIANT. Cette fonctionnalité est disponible à partir de Ververica Runtime (VVR) 11.6.
Méthodes d'accès
La syntaxe d'accès dépend du format interne du champ imbriqué. Les exemples ci-dessous utilisent un champ nommé nest_col.
Format tableau (ARRAY ou tableau VARIANT)
Utilisez nest_col[integer] pour récupérer l'élément à l'index spécifié. L'indexation des tableaux commence à 1.
Exemple : Si nest_col est [{"id": 1, "name": "Project A"}, {"id": 2, "name": "Project B"}], alors nest_col[1] renvoie {"id": 1, "name": "Project A"}.
Format table de hachage (MAP ou objet VARIANT)
Utilisez nest_col[string] pour récupérer la valeur de la clé spécifiée.
Exemple : Si nest_col est {"id": 1, "name": "Project A"}, alors nest_col['id'] renvoie 1.
Champs profondément imbriqués
Enchaînez l'opérateur [] pour accéder aux éléments profondément imbriqués.
Exemple : Si nest_col est [{"id": 1, "name": "Project A"}, {"id": 2, "name": "Project B"}], alors nest_col[1]['id'] renvoie 1.
Types de retour
Le type de retour de [] dépend du type du champ d'origine :
| Type de champ d'origine | Syntaxe d'accès | Type de retour |
|---|---|---|
ARRAY[T] |
nest_col[integer] |
T |
MAP<K, V> |
nest_col[string] |
V |
VARIANT |
nest_col[integer] ou nest_col[string] |
VARIANT |