Topik ini menjelaskan sintaksis fungsi dan operator array, serta memberikan contoh penggunaannya.
Tabel berikut menjelaskan fungsi dan operator array yang didukung oleh Simple Log Service.
Fungsi atau operator | Sintaksis | Deskripsi | Didukung di SQL | Didukung di SPL |
[x] | Mengembalikan elemen dengan indeks x dalam array. Operator ini setara dengan fungsi element_at. | √ | × | |
array_agg(x) | Mengembalikan array yang terdiri dari semua nilai dari bidang x. | √ | × | |
array_distinct(x) | Menghapus elemen duplikat dari array. | √ | √ | |
array_except(x, y) | Menghitung selisih dua array. | √ | √ | |
array_intersect(x, y) | Menghitung irisan dua array. | √ | √ | |
array_join(x, delimiter) | Menggabungkan elemen-elemen array menjadi string dengan menggunakan pemisah tertentu. Jika array berisi elemen null, elemen null akan diabaikan. Penting Fungsi array_join dapat mengembalikan hingga 1 KB data. Jika ukuran data yang dikembalikan melebihi 1 KB, data akan dipotong. | √ | √ | |
array_join(x, delimiter, null_replacement) | Menggabungkan elemen-elemen array menjadi string dengan menggunakan pemisah tertentu. Jika array berisi elemen null, elemen null diganti dengan nilai parameter null_replacement. Penting Fungsi array_join dapat mengembalikan hingga 1 KB data. Jika ukuran data yang dikembalikan melebihi 1 KB, data akan dipotong. | √ | √ | |
array_max(x) | Mengembalikan nilai maksimum dalam array. | √ | √ | |
array_min(x) | Mengembalikan nilai minimum dalam array. | √ | √ | |
array_position(x, element) | Mengembalikan indeks elemen tertentu dalam array. Indeks dimulai dari 1. Jika elemen yang ditentukan tidak ada, fungsi mengembalikan 0. | √ | √ | |
array_remove(x, element) | Menghapus elemen tertentu dari array. | √ | √ | |
array_sort(x) | Mengurutkan elemen dalam array secara ascending. Jika array berisi elemen null, elemen null ditempatkan di akhir. | √ | √ | |
array_transpose(x) | Menukar matriks dan mengembalikan array dua dimensi baru yang terdiri dari elemen-elemen dalam matriks. Elemen-elemen tersebut ditempatkan dengan menggunakan indeks yang sama. | √ | × | |
array_union(x, y) | Menghitung gabungan dua array. | √ | × | |
cardinality(x) | Menghitung jumlah elemen dalam array. | √ | √ | |
concat(x, y…) | Menggabungkan beberapa array menjadi satu array. | √ | × | |
contains(x, element) | Memeriksa apakah array berisi elemen tertentu. Jika array berisi elemen tersebut, fungsi mengembalikan true. | √ | × | |
element_at(x, y) | Mengembalikan elemen dengan indeks y dalam array. | √ | × | |
filter(x, lambda_expression) | Menyaring elemen dalam array berdasarkan ekspresi lambda dan mengembalikan elemen yang sesuai dengan ekspresi lambda. | √ | √ | |
flatten(x) | Mentransformasikan array dua dimensi menjadi array satu dimensi. | √ | × | |
reduce(x, lambda_expression) | Mengembalikan jumlah elemen dalam array berdasarkan ekspresi lambda. | √ | √ | |
reverse(x) | Membalikkan elemen dalam array. | √ | √ | |
sequence(x, y) | Mengembalikan array elemen dalam rentang tertentu. Elemen-elemen tersebut berturutan dan bertambah. Langkah penambahan adalah 1, yang merupakan nilai default. | √ | √ | |
sequence(x, y, step) | Mengembalikan array elemen dalam rentang tertentu. Elemen-elemen tersebut berturutan dan bertambah. Langkah penambahan adalah nilai kustom. | √ | √ | |
shuffle(x) | Mengacak elemen dalam array. | √ | √ | |
slice(x, start, length) | Mengembalikan subset dari array. | √ | √ | |
transform(x, lambda_expression) | Mentransformasi setiap elemen dalam array menggunakan ekspresi lambda. | √ | √ | |
zip(x, y...) | Menggabungkan beberapa array menjadi array dua dimensi. Elemen-elemen dengan indeks yang sama di array input membentuk array baru di array dua dimensi. | √ | √ | |
zip_with(x, y, lambda_expression) | Menggabungkan dua array menjadi satu array menggunakan ekspresi lambda. | √ | × |
Operator Subskrip
Operator subskrip mengembalikan elemen dengan indeks x dalam array. Operator ini setara dengan fungsi element_at.
Sintaksis
[x]Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah indeks elemen dalam array. Indeks dimulai dari 1. Nilai parameter ini bertipe bigint. |
Tipe Nilai Kembali
Tipe data elemen yang ditentukan.
Contoh
Kembalikan elemen pertama dari nilai bidang number.
Bidang Contoh
number:[49,50,45,47,50]Pernyataan Kueri
* | SELECT cast(json_parse(number) as array(bigint)) [1]Hasil Kueri dan Analisis

Fungsi array_agg
Fungsi array_agg mengembalikan array yang terdiri dari semua nilai dari bidang x.
Sintaksis
array_agg (x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bisa berupa tipe data apa pun. |
Tipe Nilai Kembali
Tipe array.
Contoh
Kembalikan array yang terdiri dari semua nilai dari bidang status.
Pernyataan Kueri
* | SELECT array_agg(status) AS arrayHasil Kueri dan Analisis

Fungsi array_distinct
Fungsi array_distinct menghapus elemen duplikat dari array.
Sintaksis
array_distinct(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Hapus elemen duplikat dari nilai bidang number.
Bidang Contoh
number:[49,50,45,47,50]Pernyataan Kueri
*| SELECT array_distinct(cast(json_parse(number) as array(bigint)))Hasil Kueri dan Analisis

Fungsi array_except
Fungsi array_except menghitung selisih dua array.
Sintaksis
array_except(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Hitung selisih antara array [1,2,3,4,5] dan [1,3,5,7].
Pernyataan Kueri
* | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7])Hasil Kueri dan Analisis

Fungsi array_intersect
Fungsi array_intersect menghitung irisan dua array.
Sintaksis
array_intersect(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Hitung irisan antara array [1,2,3,4,5] dan [1,3,5,7].
Pernyataan Kueri
* | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7])Hasil Kueri dan Analisis

Fungsi array_join
Fungsi array_join menggabungkan elemen-elemen array menjadi string menggunakan pemisah tertentu.
Sintaksis
Jika Anda menggunakan sintaksis berikut, fungsi akan menggabungkan elemen-elemen array menjadi string menggunakan pemisah tertentu. Jika array berisi elemen null, elemen null akan diabaikan.
array_join(x, delimiter)Jika Anda menggunakan sintaksis berikut, fungsi akan menggabungkan elemen-elemen array menjadi string menggunakan pemisah tertentu. Jika array berisi elemen null, elemen null diganti dengan nilai parameter null_replacement.
array_join(x, delimiter,null_replacement)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah tipe array sembarang. |
delimiter | Nilai parameter ini adalah pemisah yang digunakan untuk menggabungkan elemen. Anda dapat menentukan string untuk parameter ini. |
null_replacement | Nilai parameter ini adalah string yang digunakan untuk menggantikan elemen null. |
Tipe Nilai Kembali
Tipe varchar.
Contoh
Gabungkan elemen-elemen dari array [null, 'Log','Service'] menjadi string menggunakan spasi dan ganti elemen null dengan Alicloud.
Pernyataan Kueri
* | SELECT array_join(array[null,'Log','Service'],' ','Alicloud')Hasil Kueri dan Analisis

Fungsi array_max
Fungsi array_max mengembalikan nilai maksimum dalam array.
Sintaksis
array_max(x) Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. Penting Jika array berisi elemen null, fungsi mengembalikan null. |
Tipe Nilai Kembali
Sama dengan tipe data elemen dalam nilai parameter.
Contoh
Kembalikan nilai maksimum dalam array.
Bidang Contoh
number:[49,50,45,47,50]Pernyataan Kueri
*| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_numberHasil Kueri dan Analisis

Fungsi array_min
Fungsi array_min mengembalikan nilai minimum dalam array.
Sintaksis
array_min(x) Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. Penting Jika array berisi elemen null, fungsi mengembalikan null. |
Tipe Nilai Kembali
Sama dengan tipe data elemen dalam nilai parameter.
Contoh
Kembalikan nilai minimum dalam array.
Bidang Contoh
number:[49,50,45,47,50]Pernyataan Kueri
*| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_numberHasil Kueri dan Analisis

Fungsi array_position
Fungsi array_position mengembalikan indeks elemen tertentu dalam array. Indeks dimulai dari 1. Jika elemen tidak ditemukan, fungsi mengembalikan 0.
Sintaksis
array_position(x, element)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
element | Nilai parameter ini adalah elemen dalam array. Catatan Jika elemen tersebut adalah null, fungsi mengembalikan null. |
Tipe Nilai Kembali
Tipe bigint.
Contoh
Kembalikan indeks 45 dalam array [49,45,47].
Pernyataan Kueri
* | SELECT array_position(array[49,45,47],45)Hasil Kueri dan Analisis

Fungsi array_remove
Fungsi array_remove menghapus elemen tertentu dari array.
Sintaksis
array_remove(x, element)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
element | Nilai parameter ini adalah elemen dalam array. Catatan Jika elemen tersebut adalah null, fungsi mengembalikan null. |
Tipe Nilai Kembali
Tipe array.
Contoh
Hapus 45 dari array [49,45,47].
Pernyataan Kueri
* | SELECT array_remove(array[49,45,47],45)Hasil Kueri dan Analisis

Fungsi array_sort
Fungsi array_sort mengurutkan elemen dalam array secara ascending. Jika array berisi elemen null, elemen null ditempatkan di akhir.
Sintaksis
array_sort(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Urutkan elemen dalam array ['b', 'd', null, 'c', 'a'] secara ascending.
Pernyataan Kueri
* | SELECT array_sort(array['b','d',null,'c','a'])Hasil Kueri dan Analisis

Fungsi array_transpose
Fungsi array_transpose menukar matriks dan mengembalikan array dua dimensi baru yang terdiri dari elemen-elemen dalam matriks. Elemen-elemen tersebut ditempatkan menggunakan indeks yang sama.
Sintaksis
array_transpose(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array(double). |
Tipe Nilai Kembali
Tipe array(double).
Contoh
Buat array dua dimensi dari elemen-elemen yang ditempatkan menggunakan indeks yang sama dalam array dua dimensi yang berbeda. Sebagai contoh, dalam array [0,1,2,3], [10,19,18,17], dan [9,8,7], elemen 0, 10, dan 9 ditempatkan menggunakan indeks 1. Dengan cara ini, array baru [0.0,10.0,9.0] dibentuk.
Pernyataan Kueri
* | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]])Hasil Kueri dan Analisis

Fungsi array_union
Fungsi array_union menghitung gabungan dua array.
Sintaksis
array_union(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Hitung gabungan antara array [1,2,3,4,5] dan [1,3,5,7].
Pernyataan Kueri
* | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7])Hasil Kueri dan Analisis

Fungsi cardinality
Fungsi cardinality menghitung jumlah elemen dalam array.
Sintaksis
cardinality(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe bigint.
Contoh
Hitung jumlah elemen dalam nilai bidang number.
Bidang Contoh
number:[49,50,45,47,50]Pernyataan Kueri
*| SELECT cardinality(cast(json_parse(number) as array(bigint)))Hasil Kueri dan Analisis

Fungsi concat
Fungsi concat menggabungkan beberapa array menjadi satu array.
Sintaksis
concat(x, y…)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Gabungkan array ['red','blue'] dan ['yellow','green'] menjadi satu array.
Pernyataan Kueri
* | SELECT concat(array['red','blue'],array['yellow','green'])Hasil Kueri dan Analisis

Fungsi contains
Fungsi contains memeriksa apakah array berisi elemen tertentu. Jika array berisi elemen tersebut, fungsi mengembalikan true.
Sintaksis
contains(x, element)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
element | Nilai parameter ini adalah elemen dalam array. |
Tipe Nilai Kembali
Tipe Boolean.
Contoh
Periksa apakah nilai bidang region berisi cn-beijing.
Bidang Contoh
region:["cn-hangzhou","cn-shanghai","cn-beijing"]Pernyataan Kueri
*| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing')Hasil Kueri dan Analisis

Fungsi element_at
Fungsi element_at mengembalikan elemen dengan indeks y dalam array.
Sintaksis
element_at(x, y)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini adalah indeks elemen dalam array. Indeks dimulai dari 1. Nilai parameter ini bertipe bigint. |
Tipe Nilai Kembali
Tipe data sembarang.
Contoh
Kembalikan elemen kedua dalam nilai bidang number.
Bidang Contoh
number:[49,50,45,47,50]Pernyataan Kueri
* | SELECT element_at(cast(json_parse(number) AS array(varchar)), 2)Hasil Kueri dan Analisis

Fungsi filter
Fungsi filter menyaring elemen-elemen dalam array berdasarkan ekspresi lambda dan mengembalikan elemen yang sesuai dengan ekspresi lambda.
Sintaksis
filter(x, lambda_expression)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
lambda_expression | Nilai dari parameter ini adalah ekspresi lambda. Untuk informasi lebih lanjut, lihat Ekspresi lambda. |
Tipe Nilai Kembali
Tipe array.
Contoh
Kembalikan elemen yang lebih besar dari 0 dalam array [5,-6,null,7] menggunakan ekspresi lambda x -> x > 0.
Pernyataan Kueri
* | SELECT filter(array[5,-6,null,7],x -> x > 0)Hasil Kueri dan Analisis

Fungsi flatten
Fungsi flatten mentransformasikan array dua dimensi menjadi array satu dimensi.
Sintaksis
flatten(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Transformasikan array dua dimensi [array[1,2,3,4],array[5,2,2,4]] menjadi array satu dimensi.
Pernyataan Kueri
* | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]])Hasil Kueri dan Analisis

Fungsi reduce
Fungsi reduce mengembalikan jumlah elemen dalam array berdasarkan ekspresi lambda.
Sintaksis
reduce(x, lambda_expression)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
lambda_expression | Nilai parameter ini adalah kombinasi dari nilai awal, ekspresi lambda yang ingin digunakan, dan metode pemrosesan hasil ekspresi lambda. Untuk informasi lebih lanjut, lihat Ekspresi lambda. |
Tipe Nilai Kembali
Tipe bigint.
Contoh
Kembalikan jumlah elemen dalam array [5,20,50].
Pernyataan Kueri
* | SELECT reduce(array[5,20,50],0,(s, x) -> s + x, s -> s)Hasil Kueri dan Analisis

Fungsi reverse
Fungsi reverse membalikkan elemen-elemen dalam array.
Sintaksis
reverse(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Balikkan elemen-elemen dalam array [1,2,3,4,5].
Pernyataan Kueri
* | SELECT reverse(array[1,2,3,4,5])Hasil Kueri dan Analisis

Fungsi sequence
Fungsi sequence mengembalikan array elemen dalam rentang tertentu. Elemen-elemen tersebut berturutan dan bertambah.
Sintaksis
Jika Anda menggunakan sintaksis berikut, langkah penambahan default adalah 1.
sequence(x, y)Jika Anda menggunakan sintaksis berikut, Anda dapat menentukan langkah penambahan kustom.
sequence(x, y, step)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe bigint atau timestamp. Ekspresi timestamp UNIX dan tanggal waktu didukung. |
y | Nilai parameter ini bertipe bigint atau timestamp. Ekspresi timestamp UNIX dan tanggal waktu didukung. |
step | Nilai parameter ini adalah langkah penambahan. Jika nilai parameter x dan y adalah ekspresi tanggal waktu, nilai parameter step berada dalam salah satu format berikut:
|
Tipe Nilai Kembali
Tipe array.
Contoh
Contoh 1: Kembalikan angka genap dari 0 hingga 10.
Pernyataan Kueri
* | SELECT sequence(0,10,2)Hasil Kueri dan Analisis

Contoh 2: Kembalikan tanggal dari 23 Oktober 2017 hingga 12 Agustus 2021 dengan langkah penambahan 1 tahun.
Pernyataan Kueri
ww* | SELECT sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month )Hasil Kueri dan Analisis

Contoh 3: Kembalikan timestamp UNIX dari 1628733298 hingga 1628734085 dengan langkah penambahan 60 detik.
Pernyataan Kueri
* | SELECT sequence(1628733298,1628734085,60)Hasil Kueri dan Analisis

Fungsi shuffle
Fungsi shuffle mengacak elemen-elemen dalam array.
Sintaksis
shuffle(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Kocok elemen-elemen dalam array [1,2,3,4,5].
Pernyataan Kueri
*| SELECT shuffle(array[1,2,3,4,5])Hasil Kueri dan Analisis

Fungsi slice
Fungsi slice mengembalikan subset dari array.
Sintaksis
slice(x, start, length)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
start | Nilai parameter ini adalah indeks di mana Simple Log Service mulai mengekstrak elemen.
|
length | Nilai parameter ini adalah jumlah elemen dalam subset yang ingin diperoleh. |
Tipe Nilai Kembali
Tipe array.
Contoh
Kembalikan subset dari array [1,2,4,5,6,7,7] mulai dari elemen ketiga. Subset terdiri dari dua elemen.
Pernyataan Kueri
* | SELECT slice(array[1,2,4,5,6,7,7],3,2)Hasil Kueri dan Analisis

Fungsi transform
Fungsi transform mentransformasi setiap elemen dalam array menggunakan ekspresi lambda.
Sintaksis
transform(x, lambda_expression)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
lambda_expression | Nilai parameter ini adalah ekspresi lambda. Untuk informasi lebih lanjut, lihat Ekspresi lambda. |
Tipe Nilai Kembali
Tipe array.
Contoh
Tambahkan 1 ke setiap elemen dalam array [5,6] dan kembalikan array baru.
Pernyataan Kueri
* | SELECT transform(array[5,6],x -> x + 1)Hasil Kueri dan Analisis

Fungsi zip
Fungsi zip menggabungkan beberapa array menjadi array dua dimensi. Elemen-elemen dengan indeks yang sama di array input membentuk array baru di array dua dimensi.
Sintaksis
zip(x, y...) Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
Tipe Nilai Kembali
Tipe array.
Contoh
Gabungkan array [1, 2,3], ['1b', null, '3b'], dan [1, 2,3] menjadi array dua dimensi.
Pernyataan Kueri
* | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3])Hasil Kueri dan Analisis

Fungsi zip_with
Fungsi zip_with menggabungkan dua array menjadi satu array menggunakan ekspresi lambda.
Sintaksis
zip_with(x, y, lambda_expression)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini bertipe array. |
y | Nilai parameter ini bertipe array. |
lambda_expression | Nilai parameter ini adalah ekspresi lambda. Untuk informasi lebih lanjut, lihat Ekspresi lambda. |
Tipe Nilai Kembali
Tipe array.
Contoh
Gunakan ekspresi lambda (x, y) -> x + y untuk menambahkan elemen-elemen dalam array [1, 2] dan [3, 4], lalu kembalikan array baru.
Pernyataan Kueri
SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)Hasil Kueri dan Analisis
