Fungsi JSON_EXPLODE MaxCompute digunakan untuk memperluas setiap elemen dalam array JSON atau objek JSON menjadi beberapa baris rekaman. Topik ini memberikan penjelasan rinci tentang penggunaan fungsi JSON_EXPLODE beserta contohnya.
Format perintah
JSON_EXPLODE(JSON <var>)Deskripsi parameter
var: Diperlukan. Mendukung tipe JSON_ARRAY atau JSON_OBJECT. Tidak mendukung konstanta JSON, STRING JSON, NUMBER JSON, BOOLEAN JSON, dan tipe NULL.
Deskripsi nilai kembalian
Fungsi mengembalikan baris yang telah ditransformasi dalam format berikut:
+-------+-------+
| KEY | VALUE |
|-------+-------|Untuk tipe var JSON ARRAY, bagian terluar dari JSON ARRAY diperluas menjadi beberapa baris data JSON dengan KEY bernilai NULL dan VALUE sebagai elemen array.
Untuk tipe var JSON OBJECT, setiap pasangan KEY-VALUE dari bagian terluar JSON OBJECT diperluas menjadi baris dengan dua kolom: kolom KEY bertipe STRING adalah KEY dari JSON OBJECT, dan kolom VALUE bertipe JSON adalah VALUE dari JSON OBJECT.
Contoh
Buat tabel bernama table_json dan masukkan data ke dalamnya, di mana baris pertama adalah tipe JSON OBJECT dan baris kedua adalah tipe JSON ARRAY.
-- Buat tabel
CREATE TABLE table_json(c1 json);
-- Masukkan 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}');
-- Lihat data tabel
SELECT * FROM table_json;Kueri mengembalikan hasil berikut:
+-----------------------------+
| c1 |
+-------------------------------+
| {"a":123,"b":"hello"} |
| [1,true,2,{"a":456}] |
+-------------------------------+Fungsi JSON_EXPLODE memperluas setiap elemen dalam array JSON atau objek JSON menjadi beberapa baris keluaran. Berikut adalah contoh kode:
SELECT JSON_EXPLODE(table_json.c1) FROM table_json;Kueri mengembalikan hasil berikut:
+-----+------------+
| key | value |
+-----+------------+
| \N | 1 |
| \N | true |
| \N | 2 |
| \N | {"a":456} |
| a | 123 |
| b | hello |
+-----+------------+Saat mentransformasi data JSON, elemen dalam data JSON yang sama mempertahankan urutan aslinya. Namun, urutan beberapa entri data JSON mungkin berbeda.