A função JSON_EXPLODE do MaxCompute transforma cada elemento de um array ou objeto JSON em linhas separadas de registro. Este tópico traz instruções detalhadas e exemplos práticos para o uso da função JSON_EXPLODE.
Formato do comando
JSON_EXPLODE(JSON <var>)
Descrição dos parâmetros
var: Obrigatório. Aceita os tipos JSON_ARRAY ou JSON_OBJECT. Não aceita constantes JSON nem os tipos JSON STRING, JSON NUMBER, JSON BOOLEAN e NULL.
Descrição do valor de retorno
A função retorna as linhas transformadas no formato a seguir:
+-------+-------+
| KEY | VALUE |
|-------+-------|
Para um parâmetro var do tipo JSON ARRAY, a função expande a camada mais externa do array JSON em várias linhas, definindo
KEYcomo NULL eVALUEcomo o elemento do array.Para var JSON OBJECT, a função expande cada par
KEY-VALUEda camada mais externa em duas colunas:KEY(STRING) para a chave eVALUE(JSON) para o valor.
Exemplo
Crie uma tabela chamada table_json e insira dados nela, em que a primeira linha é do tipo JSON OBJECT e a segunda linha é do 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;
A consulta retorna o seguinte resultado:
+-----------------------------+
| c1 |
+-------------------------------+
| {"a":123,"b":"hello"} |
| [1,true,2,{"a":456}] |
+-------------------------------+
A função JSON_EXPLODE expande cada elemento de um array JSON ou objeto JSON em várias linhas de saída. Confira o código de exemplo:
SELECT JSON_EXPLODE(table_json.c1) FROM table_json;
O resultado da consulta é o seguinte:
+-----+------------+
| key | value |
+-----+------------+
| \N | 1 |
| \N | true |
| \N | 2 |
| \N | {"a":456} |
| a | 123 |
| b | hello |
+-----+------------+
Ao transformar dados JSON, os elementos dentro de uma mesma estrutura mantêm a sequência original. No entanto, a ordem de várias entradas JSON pode variar.