MaxCompute JSON_EXPLODE işlevi, bir JSON dizisi veya JSON nesnesi içindeki her öğeyi birden fazla kayıt satırına açmak için tasarlanmıştır. Bu konuda JSON_EXPLODE işlevinin ayrıntılı kullanım talimatları ve örnekleri sunulmaktadır.
Komut biçimi
JSON_EXPLODE(JSON <var>)
Parametre açıklaması
var: Zorunludur. JSON_ARRAY veya JSON_OBJECT türlerini destekler. JSON sabitleri, JSON STRING, JSON NUMBER, JSON BOOLEAN ve NULL türlerini desteklemez.
Dönüş değeri açıklaması
İşlev, dönüştürülen satırları aşağıdaki biçimde döndürür:
+-------+-------+
| KEY | VALUE |
|-------+-------|
JSON ARRAY türündeki var değişkeni için, JSON ARRAY'in en dış katmanı birden fazla JSON veri satırına açılır; KEY sütunu NULL, VALUE sütunu ise dizi öğesidir.
JSON OBJECT türündeki var değişkeni için, JSON OBJECT'in en dış katmanındaki her anahtar-değer çifti iki sütunlu satırlara açılır: STRING türündeki KEY sütunu JSON OBJECT'in anahtarını, JSON türündeki VALUE sütunu ise JSON OBJECT'in değerini temsil eder.
Örnek
table_json adında bir tablo oluşturun ve içine veri ekleyin; ilk satır JSON OBJECT türünde, ikinci satır ise JSON ARRAY türündedir.
-- 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;
Sorgu aşağıdaki sonucu döndürür:
+-----------------------------+
| c1 |
+-------------------------------+
| {"a":123,"b":"hello"} |
| [1,true,2,{"a":456}] |
+-------------------------------+
JSON_EXPLODE işlevi, bir JSON dizisi veya JSON nesnesindeki her öğeyi birden fazla çıktı satırına açar. Aşağıda örnek kod yer almaktadır:
SELECT JSON_EXPLODE(table_json.c1) FROM table_json;
Sorgu aşağıdaki sonucu döndürür:
+-----+------------+
| key | value |
+-----+------------+
| \N | 1 |
| \N | true |
| \N | 2 |
| \N | {"a":456} |
| a | 123 |
| b | hello |
+-----+------------+
JSON verilerini dönüştürürken, aynı JSON verisi içindeki öğeler orijinal sıralarını korur. Ancak, farklı JSON veri girişlerinin sırası değişebilir.