All Products
Search
Document Center

Simple Log Service:Fungsi dan operator map

Last Updated:Jun 11, 2026

Pelajari sintaksis dan penggunaan fungsi serta operator map di SLS.

SLS mendukung fungsi dan operator map berikut.

Penting Jika Anda ingin menggunakan string dalam pernyataan analitik, bungkus string tersebut dengan tanda petik tunggal (''). String yang tidak dibungkus atau dibungkus dengan tanda petik ganda ("") menunjukkan nama field atau nama kolom. Misalnya, 'status' merepresentasikan string status, sedangkan status atau "status" merepresentasikan field log status.

Nama fungsi

Sintaksis

Deskripsi

SQL

SPL

operator subscript

[x]

Mengembalikan nilai untuk kunci tertentu dari sebuah map.

×

fungsi cardinality

cardinality(x)

Mengembalikan cardinality (ukuran) sebuah map.

×

fungsi element_at

element_at(x, key)

Mengembalikan nilai untuk kunci tertentu dari sebuah map.

fungsi histogram

histogram(x)

Mengelompokkan hasil kueri dan analisis ke dalam sebuah map.

×

fungsi histogram_u

histogram_u(x)

Mengelompokkan hasil dalam format multi-baris dan multi-kolom.

×

fungsi map

map()

Mengembalikan map kosong.

map(x, y)

Membuat map dari dua array.

fungsi map_agg

map_agg(x, y)

Membuat map dengan x sebagai kunci dan y sebagai nilai. Jika y memiliki beberapa nilai, salah satu dipilih secara acak.

×

fungsi map_concat

map_concat(x, y...)

Menggabungkan beberapa map menjadi satu map.

fungsi map_filter

map_filter(x, lambda_expression)

Menyaring entri dalam map berdasarkan ekspresi lambda.

fungsi map_keys

map_keys(x)

Mengekstraksi semua kunci dari sebuah map dan mengembalikannya sebagai array.

fungsi map_values

map_values(x)

Mengekstraksi semua nilai dari sebuah map dan mengembalikannya sebagai array.

fungsi multimap_agg

multimap_agg(x, y)

Membuat map dengan x sebagai kunci dan y sebagai array nilai. Jika y memiliki beberapa nilai, semuanya dikumpulkan.

×

Operator subscript

Operator subscript mengembalikan nilai dari kunci tertentu dalam sebuah map.

Sintaksis

[x]

Parameter

Parameter

Deskripsi

x

Kunci yang akan diakses. Harus bertipe varchar.

Tipe nilai kembalian

Tipe data hasilnya sama dengan tipe nilai dari map tersebut.

Contoh

Dalam log transformasi data SLS, field etl_context bertipe map. Gunakan operator subscript untuk mengambil nilai project dari etl_context.

  • Field contoh

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
  • Pernyataan kueri dan analisis

    * | SELECT try_cast(json_parse(etl_context) AS map(varchar, varchar))['project']
  • Kolom _col0 mengembalikan datalab-148****6461-cn-chengdu, yaitu nilai project yang diekstraksi dari etl_context.

Fungsi cardinality

Fungsi cardinality mengembalikan cardinality (jumlah elemen) sebuah map.

Sintaksis

cardinality(x)

Parameter

Parameter

Deskripsi

x

Map input.

Tipe nilai kembalian

bigint

Contoh

Hitung permintaan berdasarkan metode dengan histogram, lalu hitung jumlah metode unik menggunakan fungsi cardinality.

  • Pernyataan kueri dan analisis

    * |
    SELECT
      histogram(request_method) AS request_method,
      cardinality(histogram(request_method)) AS "kinds"
  • Hasil kueri dan analisis: Kolom request_method mengembalikan {"DELETE":5,"POST":7,"GET":41,"PUT":4}, dan kolom kinds mengembalikan 4, yang menunjukkan terdapat empat metode permintaan.

Fungsi element_at

Fungsi element_at mengembalikan nilai untuk kunci tertentu dari sebuah map.

Sintaksis

element_at(x, key)

Parameter

Parameter

Deskripsi

x

Parameter harus berupa map.

key

Kunci dalam map.

Tipe nilai kembalian

Tipe data hasilnya sama dengan tipe nilai dari map tersebut.

Contoh

Hitung permintaan berdasarkan metode dengan histogram, lalu ambil jumlah DELETE menggunakan fungsi element_at.

  • Pernyataan kueri dan analisis

    * |
    SELECT
      histogram(request_method) AS request_method,
      element_at(histogram(request_method),'DELETE') AS "count"
  • Hasil kueri dan analisis: Kolom request_method mengembalikan {"HEAD":686,"DELETE":13619,"POST":34365,"GET":138097,"PUT":34056}, dan kolom count mengembalikan 13619 (jumlah permintaan DELETE).

Fungsi histogram

Fungsi histogram mengelompokkan hasil sebagai map JSON, mirip dengan * | SELECT count(*) GROUP BY x.

Sintaksis

histogram(x)

Parameter

Parameter

Deskripsi

x

Parameter dapat bertipe data apa pun.

Tipe nilai kembalian

map

Contoh

Hitung permintaan berdasarkan metode dengan fungsi histogram.

  • Pernyataan kueri dan analisis

    * | SELECT histogram(request_method) AS request_method
  • Hasilnya adalah {"HEAD":30,"DELETE":564,"POST":1382,"GET":5420,"PUT":1334}. Metode GET memiliki jumlah tertinggi, yaitu 5.420.

Fungsi histogram_u

Fungsi histogram_u mengelompokkan data dan mengembalikan hasil dalam format multi-baris dan multi-kolom.

Sintaksis

histogram_u(x)

Parameter

Parameter

Deskripsi

x

Parameter dapat bertipe data apa pun.

Tipe nilai kembalian

bigint

Contoh

Hitung permintaan berdasarkan metode dengan histogram_u dan tampilkan hasilnya sebagai grafik kolom.

  • Pernyataan kueri dan analisis

    *|SELECT  histogram_u(request_method) as request_method
  • Hasil kueri dan analisishistogram_u

Fungsi map

Fungsi map mengembalikan map kosong atau membuat map dari dua array.

Sintaksis

  • Mengembalikan map kosong.

    map()
  • Membuat map dari dua array.

    map(x,y) 

Parameter

Parameter

Deskripsi

x

Parameter harus berupa array.

y

Parameter harus berupa array.

Tipe nilai kembalian

map

Contoh

  • Contoh 1: Field class dan number adalah array. Gunakan fungsi map untuk membuat pemetaan kunci-nilai antara setiap kelas dan jumlah siswanya.

    • Field contoh

      class:["class01","class02","class03","class04","class05"]
      number:[49,50,45,47,50]
    • Pernyataan kueri dan analisis

      * | SELECT map(try_cast(json_parse(class) AS array(varchar)) ,try_cast(json_parse(number) AS array(bigint)))
    • Hasil kueri dan analisis adalah {"class01":49,"class03":45,"class02":50,"class05":50,"class04":47}.

  • Contoh 2: Mengembalikan map kosong.

    • Pernyataan kueri dan analisis

      *| SELECT map()
    • Hasilnya adalah {}, yaitu map kosong.

Fungsi map_agg

Fungsi map_agg memetakan x dan y ke dalam sebuah map, di mana x adalah kunci dan y adalah nilai. Jika terdapat beberapa nilai untuk y, satu nilai dipilih secara acak.

Sintaksis

map_agg(x, y)

Parameter

Parameter

Deskripsi

x

Parameter dapat bertipe data apa pun.

y

Parameter dapat bertipe data apa pun.

Tipe nilai kembalian

map

Contoh

Petakan request_method (kunci) dan request_time (nilai) ke dalam sebuah map.

  • Field contoh

    request_method:POST
    request_time:80
  • Pernyataan kueri dan analisis

    * | SELECT map_agg(request_method,request_time)
  • Hasil kueri dan analisis adalah {"HEAD":47.0,"DELETE":26.0,"POST":80.0,"GET":51.0,"PUT":49.0}.

Fungsi map_concat

Fungsi map_concat menggabungkan beberapa map menjadi satu map.

Sintaksis

map_concat(x, y)

Parameter

Parameter

Deskripsi

x

Parameter harus berupa map.

y

Parameter harus berupa map.

Tipe nilai kembalian

map

Contoh

Dalam log transformasi data SLS, baik etl_context maupun progress bertipe map. Gunakan map_concat untuk menggabungkannya.

  • Field contoh

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
    progress: {
     accept:3
     dropped:0
     delivered:3
     failed:0 }
  • Pernyataan kueri dan analisis

    * |
    SELECT
      map_concat(
        cast (
          json_parse(etl_context) AS map(varchar, varchar)
        ),
        cast (json_parse(progress) AS map(varchar, varchar))
      )
  • Hasil kueri dan analisis

    null
    {"consumer_group":"etl-83d5****071d1911974d1965","shard_id":"1","dropped":"0","project":"atalab-14****66461-cn-chengdu","delivered":"2","failed":"0","logstore":"internal-etl-log","consumer":"etl-b****510a8ee7a9532c8d6-291294","accept":"2"}

Fungsi map_filter

Fungsi map_filter menyaring map berdasarkan ekspresi lambda.

Sintaksis

map_filter(x, lambda_expression)

Parameter

Parameter

Deskripsi

x

Parameter harus berupa map.

lambda_expression

Ekspresi lambda. Ekspresi lambda.

Tipe nilai kembalian

map

Contoh

Petakan dua array ke map baru, lalu saring nilai null. Ekspresi (k, v) -> v is not null adalah ekspresi lambda.

  • Pernyataan kueri dan analisis

    * | SELECT map_filter(map(array[10, 20, 30], array['a', NULL, 'c']), (k, v) -> v is not null)
  • Hasil kueri dan analisis adalah {"10":"a","30":"c"}.

Fungsi map_keys

Fungsi map_keys mengekstraksi semua kunci dari sebuah map dan mengembalikannya sebagai array.

Sintaksis

map_keys(x)

Parameter

Parameter

Deskripsi

x

Parameter harus berupa map.

Tipe nilai kembalian

array

Contoh

Dalam log transformasi data SLS, field etl_context bertipe map. Gunakan map_keys untuk mengekstraksi semua kunci dari etl_context.

  • Field contoh

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
  • Pernyataan kueri dan analisis

    * | SELECT map_keys(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
  • Hasil kueri dan analisis adalah ["consumer","consumer_group","logstore","project","shard_id"].

Fungsi map_values

Fungsi map_values mengekstraksi semua nilai dari sebuah map dan mengembalikannya sebagai array.

Sintaksis

map_values(x)

Parameter

Parameter

Deskripsi

x

Parameter harus berupa map.

Tipe nilai kembalian

array

Contoh

Dalam log transformasi data SLS, field etl_context bertipe map. Gunakan map_values untuk mengekstraksi semua nilai dari etl_context.

  • Field contoh

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
  • Pernyataan kueri dan analisis

    * | SELECT map_values(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
  • Hasilnya adalah array semua nilai dalam etl_context: ["datalab-148****6461-cn-chengdu", "internal-etl-log", "etl-83****4d1965", "etl-b2d40ed****c8d6-291294", "0"].

Fungsi multimap_agg

Fungsi multimap_agg memetakan x dan y ke dalam sebuah map. Dalam map ini, x adalah kunci dan y adalah nilai, yang berupa array. Jika terdapat beberapa nilai y untuk kunci yang sama, semuanya dikumpulkan ke dalam array tersebut.

Sintaksis

multimap_agg(x, y)

Parameter

Parameter

Deskripsi

x

Parameter dapat bertipe data apa pun.

y

Parameter dapat bertipe data apa pun.

Tipe nilai kembalian

map

Contoh

Petakan request_method (kunci) ke request_time (array nilai) menggunakan multimap_agg.

  • Field contoh

    request_method:POST
    request_time:80
  • Pernyataan kueri dan analisis

    * | SELECT multimap_agg(request_method,request_time)
  • Hasilnya memetakan setiap metode HTTP ke array nilai request_time. Misalnya, DELETE dipetakan ke [28.0, 80.0, 21.0, 54.0, ...], POST dipetakan ke [77.0, 27.0, 52.0, 25.0, ...], dan seterusnya.