Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:JSON_TUPLE

Dernière mise à jour :Aug 09, 2026

JSON_TUPLE est une fonction tabulaire qui extrait plusieurs valeurs d'une chaîne JSON en un seul passage. Contrairement aux fonctions scalaires telles que GET_JSON_OBJECT ou JSON_VALUE, qui renvoient une seule valeur par appel, JSON_TUPLE accepte un ou plusieurs arguments de chemin et génère une ligne de sortie par argument. Utilisez cette fonction avec une jointure LATERAL TABLE pour intégrer ces lignes à votre ensemble de résultats.

Prérequis de version

Ververica Runtime (VVR) 3.0.0+

Syntaxe

JSON_TUPLE(str, path1, path2, ..., pathN)

Paramètres

Paramètre

Type

Obligatoire

Description

str

VARCHAR

Oui

La chaîne JSON à partir de laquelle extraire les valeurs.

path1, path2, ..., pathN

VARCHAR

Oui

Un ou plusieurs chemins de clé identifiant les valeurs à extraire de str. N'incluez pas le caractère $ initial. Les arguments de chemin peuvent être des littéraux de chaîne ou des références de colonne.

Notes d'utilisation

  • La syntaxe de chemin ne suit pas la notation standard JSONPath : omettez le caractère $ initial requis par la norme JSONPath.

  • Les arguments de chemin peuvent être des littéraux de chaîne ('myKey') ou des références de colonne résolues en VARCHAR au moment de l'exécution.

  • Si un chemin est introuvable dans le code JSON d'entrée, la colonne de sortie correspondante prend la valeur NULL.

  • Si str a la valeur NULL, le comportement dépend de la version de VVR. Consultez la section Modification du comportement de gestion des valeurs NULL.

Exemples

  • Données d'exemple

    Table T1. T1

    d (VARCHAR)

    s (VARCHAR)

    {"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}

    qwe3

    {"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}

    qwe2

  • Exemple

    La requête suivante extrait deux valeurs par ligne depuis la colonne d : la valeur associée à la clé littérale 'qwe' et la valeur associée à la clé nommée par la colonne s (référence de colonne). Comme il y a deux arguments de chemin, JSON_TUPLE génère deux lignes de sortie pour chaque ligne d'entrée.

    SELECT d, v
    FROM T1, lateral table(JSON_TUPLE(d, 'qwe', s))
    AS T(v);
  • Résultat

    d (VARCHAR)

    v (VARCHAR)

    {"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}

    asd

    {"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}

    asd3

    {"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}

    asd4

    {"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}

    asd5

Gestion des valeurs NULL : modification du comportement

Le comportement de JSON_TUPLE lorsque str est NULL a évolué entre les versions de VVR. Si votre job a été développé avant VVR 11.0 et repose sur l'ancien comportement, examinez la comparaison ci-dessous.

Comparaison des comportements

Prenons la requête suivante, où l'argument str est NULL :

SELECT * FROM (VALUES (1), (2)) AS v(x)
, LATERAL TABLE(
  json_tuple(CAST(NULL AS STRING), 'a', 'b')
) AS T;
-- Each input row returns two rows with NULL. Total: 4 rows — (1,null), (1,null), (2,null), (2,null)

Version VVR

Résultat

Contenu

Avant VVR 11.0 (ancien comportement)

Quatre lignes au total (deux par ligne d'entrée, une par argument de chemin)

Chaque ligne contient une colonne NULL

VVR 11.0+ (nouveau comportement)

Zéro ligne (ensemble vide)

Aucun