Topik ini menjelaskan sintaksis fungsi dan operator peta serta memberikan contoh penggunaannya.
Tabel berikut menjelaskan fungsi dan operator peta yang didukung oleh Simple Log Service.
Fungsi | Sintaksis | Deskripsi | Didukung di SQL | Didukung di SPL |
[x] | Mengembalikan nilai dari sebuah kunci dalam peta. | √ | × | |
cardinality(x) | Mengembalikan ukuran peta. | √ | × | |
element_at(x, kunci) | Mengembalikan nilai dari sebuah kunci dalam peta. | √ | √ | |
histogram(x) | Mengelompokkan hasil kueri dan analisis serta mengembalikan data dalam format JSON. | √ | × | |
histogram_u(x) | Mengelompokkan hasil kueri dan analisis serta mengembalikan data dalam beberapa baris dan beberapa kolom. | √ | × | |
map() | Mengembalikan peta kosong. | √ | √ | |
map(x, y) | Mengembalikan peta yang dibuat menggunakan dua array. | √ | √ | |
map_agg(x, y) | Mengembalikan peta yang dibuat menggunakan x dan y. x adalah kunci dalam peta. y adalah nilai dari kunci dalam peta. Jika y memiliki beberapa nilai, nilai acak akan diekstraksi sebagai nilai dari kunci. | √ | × | |
map_concat(x, y...) | Mengembalikan gabungan dari beberapa peta. | √ | √ | |
map_filter(x, lambda_expression) | Menyaring elemen dalam peta berdasarkan ekspresi lambda. | √ | √ | |
map_keys(x) | Mengembalikan array yang terdiri dari semua kunci dalam peta. | √ | √ | |
map_values(x) | Mengembalikan array yang terdiri dari semua nilai dalam peta. | √ | √ | |
multimap_agg(x, y) | Mengembalikan multimap yang dibuat menggunakan x dan y. x adalah kunci dalam multimap. y adalah nilai dari kunci dalam multimap. Nilai tersebut bertipe array. Jika y memiliki beberapa nilai, semua nilai akan diekstraksi sebagai nilai dari kunci. | √ | × |
Operator Subskrip
Operator subskrip mengembalikan nilai dari sebuah kunci dalam peta.
Sintaksis
[x]Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe varchar. |
Tipe Nilai Kembali
Tipe data sembarang.
Contoh
Dalam log yang ditransformasi oleh pekerjaan transformasi data, nilai bidang etl_context bertipe peta. Gunakan operator subskrip untuk mendapatkan nilai kunci project dari nilai bidang etl_context.
Bidang Sampel
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
* | SELECT try_cast(json_parse(etl_context) AS map(varchar, varchar))['project']Hasil Kueri dan Analisis

fungsi cardinality
Fungsi cardinality mengembalikan ukuran peta.
Sintaksis
cardinality(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe peta. |
Tipe Nilai Kembali
Tipe bigint.
Contoh
Gunakan fungsi histogram untuk mendapatkan jumlah permintaan untuk setiap metode permintaan. Kemudian, gunakan fungsi cardinality untuk mendapatkan jumlah metode permintaan.
Pernyataan Kueri
* | SELECT histogram(request_method) AS request_method, cardinality(histogram(request_method)) AS "kinds"Hasil Kueri dan Analisis

fungsi element_at
Fungsi element_at mengembalikan nilai dari sebuah kunci dalam peta.
Sintaksis
element_at(x, key)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe peta. |
key | Nilai parameter ini adalah kunci dalam peta. |
Tipe Nilai Kembali
Tipe data sembarang.
Contoh
Gunakan fungsi histogram untuk mendapatkan jumlah permintaan untuk setiap metode permintaan. Kemudian, gunakan fungsi element_at untuk mendapatkan nilai bidang DELETE.
Pernyataan Kueri
* | SELECT histogram(request_method) AS request_method, element_at(histogram(request_method),'DELETE') AS "count"Hasil Kueri dan Analisis

fungsi histogram
Fungsi histogram mengelompokkan hasil kueri dan analisis serta mengembalikan data dalam format JSON. Fungsi ini setara dengan * | SELECT count(*) GROUP BY x.
Sintaksis
histogram(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe data sembarang. |
Tipe Nilai Kembali
Tipe peta.
Contoh
Gunakan fungsi histogram untuk mendapatkan jumlah permintaan untuk setiap metode permintaan.
Pernyataan Kueri
* | SELECT histogram(request_method) AS request_methodHasil Kueri dan Analisis

fungsi histogram_u
Fungsi histogram_u mengelompokkan hasil kueri dan analisis serta mengembalikan data dalam beberapa baris dan kolom.
Sintaksis
histogram_u(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe data sembarang. |
Tipe Nilai Kembali
Tipe bigint.
Contoh
Gunakan fungsi histogram_u untuk mendapatkan jumlah permintaan untuk setiap metode permintaan, lalu tampilkan jumlahnya pada grafik kolom.
Pernyataan Kueri
*|SELECT histogram_u(request_method) as request_methodHasil Kueri dan Analisis

fungsi map
Fungsi map mengembalikan peta kosong atau peta yang dibuat menggunakan dua array.
Sintaksis
Sintaksis berikut dari fungsi map mengembalikan peta kosong:
map()Sintaksis berikut dari fungsi map mengembalikan peta yang dibuat menggunakan dua array:
map(x,y)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe peta.
Contoh
Contoh 1: Bidang class menentukan kelas. Bidang number menentukan jumlah siswa dalam kelas. Nilai kedua bidang tersebut bertipe array. Gunakan fungsi map untuk membuat peta berdasarkan nilai kedua bidang tersebut. Dalam hasil yang dikembalikan, setiap kelas dipetakan ke jumlah siswa dalam kelas tersebut.
Bidang Sampel
class:["class01","class02","class03","class04","class05"] number:[49,50,45,47,50]Pernyataan Kueri
* | SELECT map(try_cast(json_parse(class) AS array(varchar)) ,try_cast(json_parse(number) AS array(bigint)))Hasil Kueri dan Analisis

Contoh 2: Mengembalikan peta kosong.
Pernyataan Kueri
*| SELECT map()Hasil Kueri dan Analisis

fungsi map_agg
Fungsi map_agg mengembalikan peta yang dibuat menggunakan x dan y. x adalah kunci dalam peta. y adalah nilai dari kunci dalam peta. Jika y memiliki beberapa nilai, nilai acak akan diekstraksi sebagai nilai dari kunci.
Sintaksis
map_agg(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe data sembarang. |
y | Nilai parameter ini bertipe data sembarang. |
Tipe Nilai Kembali
Tipe peta.
Contoh
Ekstrak nilai dari bidang request_method dan request_time, lalu gunakan nilai yang diekstraksi untuk membuat peta. Nilai dari bidang request_method adalah kunci dalam peta. Nilai dari bidang request_time adalah nilai dari kunci dalam peta.
Bidang Sampel
request_method:POST request_time:80Pernyataan Kueri
* | SELECT map_agg(request_method,request_time)Hasil Kueri dan Analisis

fungsi map_concat
Fungsi map_concat mengembalikan gabungan dari beberapa peta.
Sintaksis
map_concat(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe peta. |
y | Parameter ini dapat bertipe data peta. |
Tipe Nilai Kembali
Tipe peta.
Contoh
Dalam log yang ditransformasi oleh pekerjaan transformasi data, nilai bidang etl_context dan progress bertipe peta. Gunakan fungsi map_concat untuk mendapatkan gabungan dari nilai-nilai bidang tersebut.
Bidang Sampel
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
* | SELECT map_concat( cast ( json_parse(etl_context) AS map(varchar, varchar) ), cast (json_parse(progress) AS map(varchar, varchar)) )Hasil Kueri dan Analisis

fungsi map_filter
Fungsi map_filter menyaring elemen dalam peta berdasarkan ekspresi lambda.
Sintaksis
map_filter(x, lambda_expression)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe peta. |
lambda_expression_expression | Ekspresi lambda. Untuk informasi lebih lanjut, lihat Ekspresi lambda. |
Tipe Nilai Kembali
Tipe peta.
Contoh
Buat peta yang tidak mengandung nilai null dari dua array menggunakan ekspresi lambda (k, v) -> v is not null.
Pernyataan Kueri
* | SELECT map_filter(map(array[10, 20, 30], array['a', NULL, 'c']), (k, v) -> v is not null)Hasil Kueri dan Analisis

fungsi map_keys
Fungsi map_keys mengembalikan array yang terdiri dari semua kunci dalam peta.
Sintaksis
map_keys(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe peta. |
Tipe Nilai Kembali
Tipe array.
Contoh
Dalam log yang ditransformasi oleh pekerjaan transformasi data, nilai bidang etl_context bertipe peta. Gunakan fungsi map_keys untuk mendapatkan semua kunci dari nilai bidang etl_context.
Bidang Sampel
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
* | SELECT map_keys(try_cast(json_parse(etl_context) AS map(varchar, varchar)))Hasil Kueri dan Analisis

fungsi map_values
Fungsi map_values mengembalikan array yang terdiri dari semua nilai dalam peta.
Sintaksis
map_values(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe peta. |
Tipe Nilai Kembali
Tipe array.
Contoh
Dalam log yang ditransformasi oleh pekerjaan transformasi data, nilai bidang etl_context bertipe peta. Gunakan fungsi map_values untuk mendapatkan nilai dari semua kunci dari nilai bidang etl_context.
Bidang Sampel
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
* | SELECT map_values(try_cast(json_parse(etl_context) AS map(varchar, varchar)))Hasil Kueri dan Analisis

fungsi multimap_agg
Fungsi multimap_agg mengembalikan multimap yang dibuat menggunakan x dan y. x adalah kunci dalam multimap. y adalah nilai dari kunci dalam multimap. Nilai tersebut bertipe array. Jika y memiliki beberapa nilai, semua nilai akan diekstraksi sebagai nilai dari kunci.
Sintaksis
multimap_agg(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe data sembarang. |
y | Nilai parameter ini bertipe data sembarang. |
Tipe Nilai Kembali
Tipe peta.
Contoh
Ekstrak semua nilai dari bidang request_method dan request_time, lalu gunakan nilai yang diekstraksi untuk membuat multimap. Nilai dari bidang request_method adalah kunci dalam multimap. Nilai dari bidang request_time adalah nilai dari kunci dalam multimap. Nilai dari kunci tersebut bertipe array.
Bidang Sampel
request_method:POST request_time:80Pernyataan Kueri
* | SELECT multimap_agg(request_method,request_time)Hasil Kueri dan Analisis
