All Products
Search
Document Center

AnalyticDB:Array

Last Updated:Mar 29, 2026

AnalyticDB for MySQL versi 3.1.1 dan yang lebih baru mendukung tipe data ARRAY dan MAP. Halaman ini menjelaskan tipe ARRAY, mencakup definisinya, batasan, contoh penggunaan, serta fungsi yang didukung.

Definisi

ARRAY menyimpan kumpulan elemen dengan tipe data yang sama dan memperbolehkan duplikat—mirip dengan list di Java. Semua elemen dalam array harus memiliki tipe yang sama. Misalnya, mendefinisikan array<int> untuk suatu kolom berarti setiap elemen dalam kolom tersebut bertipe INT.

Array bersarang (nested arrays) didukung. Contoh: array<array<string>>.

Batasan

Penting

Indeks tidak dapat dibuat pada kolom ARRAY atau MAP.

Untuk memfilter data array secara efisien, gabungkan kondisi pencarian dalam kueri SQL Anda alih-alih melakukan pemindaian penuh terhadap array. Meminimalkan data yang dipindai meningkatkan performa kueri.

Gunakan array

Buat tabel

Pernyataan berikut membuat tabel dengan dua kolom array: b bertipe array<int> dan c bertipe array<array<string>>.

Create Table `array_test` (
  `a` int,
  `b` array<int>,
  `c` array<array<string>>,
  primary key (`a`)
) DISTRIBUTED BY HASH(`a`)

Masukkan data

Masukkan nilai array sebagai string JSON. Pernyataan berikut memasukkan satu baris dengan nilai b sebesar [1,2,3] dan c sebesar [["a"],["b","c"]].

insert into array_test values (1, '[1,2,3]', '[["a"],["b","c"]]');

Kueri data

Kueri tabel untuk mengambil semua baris:

mysql> select * from array_test;
+------+---------+-------------------+
| a    | b       | c                 |
+------+---------+-------------------+
|    1 | [1,2,3] | [["a"],["b","c"]] |
+------+---------+-------------------+
1 row in set (0.08 sec)

Kolom ARRAY dan MAP dikembalikan dalam format JSON. Sebagai contoh, c[2], yang merupakan subkolom array<string> bersarang, dikembalikan sebagai array JSON.

Akses elemen array

Gunakan notasi kurung siku atau fungsi element_at untuk mengambil elemen berdasarkan indeks.

Penting

Indeks array dimulai dari 1, bukan 0. b[1] dan element_at(b, 1) ekuivalen.

Tabel berikut menunjukkan kedua sintaks akses beserta hasilnya:

EkspresiHasil
b[1]1 (elemen pertama dari b)
element_at(b, 1)1 (elemen pertama dari b)
c[2]["b","c"] (elemen kedua dari c)
element_at(c, 2)["b","c"] (elemen kedua dari c)

Contoh kueri lengkap:

mysql> select a,b[1],element_at(b,1),c[2],element_at(c,2) from array_test;
+------+------+-----------------+-----------+-----------------+
| a    | b[1] | element_at(b,1) | c[2]      | element_at(c,2) |
+------+------+-----------------+-----------+-----------------+
|    1 |    1 |               1 | ["b","c"] | ["b","c"]       |
+------+------+-----------------+-----------+-----------------+
1 row in set (0.11 sec)

Fungsi yang didukung

FungsiDeskripsiTipe kembalian
element_atMengembalikan elemen pada indeks yang diberikan (berbasis 1). Contoh: element_at(array[1,2], 1) mengembalikan 1.T
sizeMengembalikan jumlah elemen dalam array.int
containsMengembalikan apakah array berisi nilai yang ditentukan. Contoh: contains(array[1,2], 2) mengembalikan 1.BOOL
array_maxMengembalikan elemen maksimum dalam array.T
array_minMengembalikan elemen minimum dalam array.T
array_positionMengembalikan indeks kemunculan pertama suatu elemen. Contoh: array_position(array['a','b','b'],'b') mengembalikan 2.int
array_removeMenghapus semua elemen yang nilainya sama dengan nilai yang ditentukan. Contoh: array_remove(array['a','b','b'],'b') mengembalikan ['a'].array<T>
array_sortMengurutkan array. Contoh: array_sort(array[3,2,1]) mengembalikan [1,2,3].array<T>
reverseMembalik urutan elemen. Contoh: reverse(array[5,9,3]) mengembalikan [3,9,5].array<T>
shuffleMengembalikan array dengan elemen dalam urutan acak. Contoh: shuffle(array[1,5,8]) dapat mengembalikan [5,1,8].array<T>
sliceMengembalikan subarray. start adalah indeks awal berbasis 1; length adalah jumlah elemen yang dikembalikan. Contoh: slice(array[1,2,3,4,5], 3, 2) mengembalikan [3,4].array<T>
concatMenggabungkan dua atau lebih array, termasuk duplikat. Contoh: concat(array[1], array[1,2]) mengembalikan [1,1,2].array<T>
array_distinctMenghapus elemen duplikat dari array. Contoh: array_distinct(array[1,1,2]) mengembalikan [1,2].array<T>
array_unionMenggabungkan dua atau lebih array dan menghapus duplikat. Contoh: array_union(array[1], array[1,2]) mengembalikan [1,2].array<T>
array_intersectMengembalikan elemen yang muncul di semua array input. Contoh: array_intersect(array[1], array[1,2]) mengembalikan [1].array<T>
array_joinMenggabungkan elemen array menjadi string menggunakan pembatas yang ditentukan. Contoh: array_join(array[1,2,3,4],'a') mengembalikan 1a2a3a4.string
flattenMeratakan array bersarang menjadi array tingkat tunggal. Contoh: flatten(array[array[1,2],array[3]]) mengembalikan [1,2,3].array<X>