Dalam skenario bisnis yang kompleks, nilai dari suatu bidang log dapat berupa tipe data kompleks seperti array atau peta. Untuk menanyakan dan menganalisis log yang berisi bidang dengan nilai tersebut, Anda dapat menggunakan klausa UNNEST untuk memperluas nilai-nilai bidang menjadi beberapa baris guna analisis lebih lanjut.
Sintaksis
- Memperluas array menjadi beberapa baris. column_name menentukan nama kolom untuk baris.
UNNEST(x) AS table_alias(column_name) - Memperluas peta menjadi beberapa baris. key_name menentukan nama kolom untuk kunci, dan value_name menentukan nama kolom untuk nilai.
unnest(y) AS table(key_name,value_name)
try_cast(json_parse(array_column) as array(bigint)) untuk mengonversi data JSON menjadi array atau peta. Untuk informasi lebih lanjut, lihat Fungsi Konversi Tipe Data.Parameter
| Parameter | Deskripsi |
| x | Nilai parameter ini adalah sebuah array. |
| column_name | Nama kolom yang Anda tentukan untuk data yang diperluas dari array. Kolom ini digunakan untuk menyimpan elemen-elemen dalam array. |
| y | Nilai parameter ini adalah sebuah peta. |
| key_name | Nama kolom yang Anda tentukan untuk data yang diperluas dari peta. Kolom ini digunakan untuk menyimpan kunci-kunci dalam peta. |
| value_name | Nama kolom yang Anda tentukan untuk data yang diperluas dari peta. Kolom ini digunakan untuk menyimpan nilai-nilai dalam peta. |
Contoh
Contoh 1:
Perluas nilai dari bidang number menjadi beberapa baris. Nilai bidang adalah sebuah array.
- Bidang contoh
number:[49, 50, 45, 47, 50] - Pernyataan kueri
* | SELECT a FROM log, unnest(cast(json_parse(number) AS array(bigint))) AS t(a) - Hasil kueri dan analisis

Contoh 2:
Perluas nilai dari bidang number menjadi beberapa baris dan hitung jumlah elemen-elemennya. Nilai bidang adalah sebuah array.
- Bidang contoh
number:[49, 50, 45, 47, 50] - Pernyataan kueri
* | SELECT sum(a) AS sum FROM log, unnest(cast(json_parse(number) as array(bigint))) AS t(a) - Hasil kueri dan analisis

Contoh 3:
Perluas nilai dari bidang number menjadi beberapa baris dan lakukan operasi GROUP BY pada elemen-elemen tersebut. Nilai bidang adalah sebuah array.
- Bidang contoh
number:[49, 50, 45, 47, 50] - Pernyataan kueri
* | SELECT a, count(*) AS count FROM log, unnest(cast(json_parse(number) as array(bigint))) AS t(a) GROUP BY a - Hasil kueri dan analisis

Contoh 4:
Perluas nilai dari bidang number menjadi beberapa baris. Nilai bidang adalah sebuah peta.
- Bidang contoh
result:{ anomaly_type:"OverThreshold" dim_name:"request_time" is_anomaly:true score:1 value:"3.000000"} - Pernyataan kueri
* | select key, value FROM log, unnest( try_cast(json_parse(result) as map(varchar, varchar)) ) as t(key, value) - Hasil kueri dan analisis

Contoh 5:
Perluas nilai dari bidang number menjadi beberapa baris dan lakukan operasi GROUP BY pada setiap kunci. Nilai bidang adalah sebuah peta.
- Bidang contoh
result:{ anomaly_type:"OverThreshold" dim_name:"request_time" is_anomaly:true score:1 value:"3.000000"} - Pernyataan kueri
* | select key, count(*) AS count FROM log, unnest( try_cast(json_parse(result) as map(varchar, varchar)) ) as t(key, value) GROUP BY key - Hasil kueri dan analisis

Contoh 6:
Gunakan fungsi histogram untuk mendapatkan jumlah permintaan yang dikirim menggunakan setiap metode permintaan. Nilai balikannya adalah sebuah peta. Selanjutnya, gunakan klausa UNNEST untuk memperluas peta menjadi beberapa baris dan tampilkan hasil kueri serta analisis dalam diagram batang.
- Pernyataan kueri
* | SELECT key, value FROM( SELECT histogram(request_method) AS result FROM log ), unnest(result) AS t(key, value) - Hasil kueri dan analisis
