Todos los productos
Search
Centro de documentos

Realtime Compute for Apache Flink:JSON_TUPLE

Última actualización: Sep 03, 2026

JSON_TUPLE es una función con valor de tabla que extrae varios valores de una cadena JSON en una sola pasada. A diferencia de las funciones escalares como GET_JSON_OBJECT o JSON_VALUE, que devuelven un solo valor por llamada, JSON_TUPLE acepta uno o más argumentos de ruta y genera una fila de salida por cada argumento. Utilícela con una unión LATERAL TABLE para expandir esas filas en su conjunto de resultados.

Requisito de versión

Ververica Runtime (VVR) 3.0.0+

Sintaxis

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

Parámetros

Parámetro

Tipo

Obligatorio

Descripción

str

VARCHAR

Sí

Cadena JSON de la cual se extraen los valores.

path1, path2, ..., pathN

VARCHAR

Sí

Una o más rutas de clave que identifican los valores a extraer de str. No incluya el carácter $ al inicio. Los argumentos de ruta pueden ser literales de cadena o referencias a columnas.

Notas de uso

  • La sintaxis de ruta no sigue la notación estándar de JSONPath; omita el $ inicial requerido por dicho estándar.

  • Los argumentos de ruta pueden ser literales de cadena ('myKey') o referencias a columnas que se resuelvan como VARCHAR en tiempo de ejecución.

  • Si no se encuentra una ruta en el JSON de entrada, la columna de salida correspondiente será NULL.

  • Si str es NULL, el comportamiento depende de la versión de VVR. Consulte Cambio de comportamiento en el manejo de valores NULL.

Ejemplos

  • Datos de muestra

    Tabla T1. T1

    d (VARCHAR)

    s (VARCHAR)

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

    qwe3

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

    qwe2

  • Ejemplo

    La consulta a continuación extrae dos valores por fila de la columna d: el valor de la clave literal 'qwe' y el valor de la clave especificada en la columna s (referencia a columna). Como hay dos argumentos de ruta, JSON_TUPLE produce dos filas de salida por cada fila de entrada.

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

    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

Manejo de valores NULL: cambio de comportamiento

El comportamiento de JSON_TUPLE cuando str es NULL cambió entre versiones de VVR. Si su trabajo se desarrolló antes de VVR 11.0 y depende del comportamiento anterior, revise la comparación a continuación.

Comparación de comportamientos

Considere la consulta a continuación, where el argumento str es 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)

Versión de VVR

Resultado

Contenido

Anterior a VVR 11.0 (comportamiento heredado)

Cuatro filas en total (dos por fila de entrada, una por argumento de ruta)

Cada fila contiene una columna NULL

VVR 11.0+ (nuevo comportamiento)

Cero filas (conjunto vacío)

Ninguna