La función JSON_EXPLODE de MaxCompute expande cada elemento de un arreglo JSON o de un objeto JSON en varias filas de registros. En este tema se detallan las instrucciones de uso y los ejemplos de la función JSON_EXPLODE.
Formato del comando
JSON_EXPLODE(JSON <var>)
Descripción de parámetros
var: obligatorio. Admite los tipos JSON_ARRAY o JSON_OBJECT. No admite constantes JSON ni los tipos JSON STRING, JSON NUMBER, JSON BOOLEAN y NULL.
Descripción del valor devuelto
La función devuelve las filas transformadas con el siguiente formato:
+-------+-------+
| KEY | VALUE |
|-------+-------|
Si var es de tipo JSON ARRAY, el nivel más externo del arreglo se expande en varias filas de datos JSON. La columna KEY queda como NULL y VALUE contiene el elemento del arreglo.
Si var es de tipo JSON OBJECT, cada par clave-valor del nivel más externo se expande en filas de dos columnas. La columna KEY, de tipo STRING, corresponde a la clave del objeto JSON. La columna VALUE, de tipo JSON, corresponde al valor del objeto JSON.
Ejemplo
Cree una tabla llamada table_json e inserte datos en ella. La primera fila debe ser de tipo JSON OBJECT y la segunda de tipo JSON ARRAY.
-- Create table
CREATE TABLE table_json(c1 json);
-- Insert data
INSERT INTO table_json(c1) SELECT JSON_OBJECT('a', 123,'b','hello');
INSERT INTO table_json(c1) SELECT JSON_ARRAY(1, true, 2, json'{"a":456}');
-- View table data
SELECT * FROM table_json;
La consulta devuelve el siguiente resultado:
+-----------------------------+
| c1 |
+-------------------------------+
| {"a":123,"b":"hello"} |
| [1,true,2,{"a":456}] |
+-------------------------------+
La función JSON_EXPLODE expande cada elemento de un arreglo u objeto JSON en varias filas de salida. A continuación se muestra un ejemplo de código:
SELECT JSON_EXPLODE(table_json.c1) FROM table_json;
La consulta devuelve el siguiente resultado:
+-----+------------+
| key | value |
+-----+------------+
| \N | 1 |
| \N | true |
| \N | 2 |
| \N | {"a":456} |
| a | 123 |
| b | hello |
+-----+------------+
Al transformar datos JSON, los elementos dentro de un mismo conjunto conservan su secuencia original. Sin embargo, el orden entre varios conjuntos de datos JSON puede variar.