All Products
Search
Document Center

Simple Log Service:Klausa UNNEST

Last Updated:Jun 11, 2026

Bidang log dapat berisi nilai array atau map. Gunakan klausa UNNEST untuk mengekspansi nilai-nilai tersebut menjadi beberapa baris guna kueri dan analisis.

Sintaks

  • Ekspansi sebuah array menjadi beberapa baris dalam satu kolom bernama column_name.

    UNNEST(x) AS table_alias(column_name)
  • Ekspansi sebuah map menjadi beberapa baris dengan kolom bernama key_name dan value_name.

    UNNEST(y) AS table(key_name,value_name)
Penting

Jika data Anda berupa string, uraikan menjadi objek JSON dan ubah tipe datanya ke tipe array atau map yang diperlukan. Misalnya, gunakan try_cast(json_parse(array_column) as array(bigint)). Lihat fungsi konversi tipe untuk detail selengkapnya.

Parameter

Parameter

Deskripsi

x

Ekspresi yang menghasilkan array.

column_name

Nama kolom output yang akan berisi elemen array.

y

Ekspresi yang menghasilkan map.

key_name

Nama kolom output yang akan berisi kunci map.

value_name

Nama kolom output yang akan berisi nilai map.

Contoh

Contoh 1

Ekspansi nilai array dari bidang number menjadi beberapa baris.

  • Bidang contoh

    number:[49, 50, 45, 47, 50]
  • Pernyataan kueri dan analisis

    * |
    SELECT
      a
    FROM  log,
      UNNEST(cast(json_parse(number) AS array(bigint))) AS t(a)
  • Kueri mengembalikan kolom a dengan elemen yang telah diekspansi: 49, 50, 45, 47, dan 50.

Contoh 2

Ekspansi nilai array dari bidang number menjadi beberapa baris dan hitung jumlah totalnya.

  • Bidang contoh

    Contoh ini menunjukkan satu log. Jumlah total dihitung dari semua log yang cocok dengan mengagregasi nilai number.

    number:[49, 50, 45, 47, 50]
  • Pernyataan kueri dan analisis

    * |
    SELECT
      sum(a) AS sum
    FROM  log,
      UNNEST(cast(json_parse(number) as array(bigint))) AS t(a)
  • Kueri mengembalikan kolom sum dengan nilai 368.248, yaitu total semua elemen number dari log yang cocok.

Contoh 3

Ekspansi nilai array dari bidang number menjadi beberapa baris dan kelompokkan elemen-elemennya.

  • Bidang contoh

    number:[49, 50, 45, 47, 50]
  • Pernyataan kueri dan analisis

    * |
    SELECT
      a, count(*) AS count
    FROM  log,
      UNNEST(cast(json_parse(number) as array(bigint))) AS t(a) GROUP BY a
  • Hasilnya menampilkan setiap elemen beserta jumlah kemunculannya. Misalnya, elemen 50 muncul sebanyak 1.194 kali, sedangkan elemen 47, 49, dan 45 masing-masing muncul 597 kali.

Contoh 4

Ekspansi nilai map dari bidang result menjadi beberapa baris dan kolom.

  • Bidang contoh

    result:{
      anomaly_type:"OverThreshold"
      dim_name:"request_time"
      is_anomaly:true
      score:1
      value:"3.000000"}
  • Pernyataan kueri dan analisis

    * |
    select
      key,
      value
    FROM  log,
      UNNEST(
        try_cast(json_parse(result) as map(varchar, varchar))
      ) AS t(key, value)

Contoh 5

Ekspansi nilai map dari bidang result dan kelompokkan berdasarkan kunci.

  • Bidang contoh

    result:{
      anomaly_type:"OverThreshold"
      dim_name:"request_time"
      is_anomaly:true
      score:1
      value:"3.000000"}
  • Pernyataan kueri dan analisis

    * |
    select
      key,
      count(*) AS count
    FROM  log,
      UNNEST(
        try_cast(json_parse(result) as map(varchar, varchar))
      ) AS t(key, value)
    GROUP BY
      key
  • Hasilnya menunjukkan count sebesar 5.422 untuk masing-masing dari lima kunci (anomaly_type, dim_name, is_anomaly, score, dan value), yang menegaskan bahwa setiap log berisi pasangan kunci-nilai yang sama.

Contoh 6

Gunakan fungsi histogram untuk menghitung jumlah permintaan berdasarkan metode, lalu ekspansi map hasilnya dengan UNNEST untuk menampilkan data pada grafik kolom.

  • Pernyataan kueri dan analisis

    * |
    SELECT
      key,
      value
    FROM(
        SELECT
          histogram(request_method) AS result
        FROM      log
      ),
      UNNEST(result) AS t(key, value)
  • Hasil kueri dan analisisunnest