Mengubah satu baris data menjadi beberapa baris. Fungsi ini merupakan fungsi tabel bernilai pengguna (UDTF).
Catatan Penggunaan
Jika nilai parameter bertipe
array<T>, array yang disimpan dalam kolom diubah menjadi beberapa baris.Jika nilai parameter bertipe
map<K, V>, setiap pasangan kunci-nilai dari peta yang disimpan dalam kolom diubah menjadi satu baris dengan dua kolom. Satu kolom digunakan untuk menyimpan kunci, dan kolom lainnya digunakan untuk menyimpan nilai.Jika sebuah baris hanya berisi data null, fungsi ini tidak mengembalikan baris yang hanya berisi data null.
Batasan
Pernyataan
SELECThanya dapat berisi satu fungsiEXPLODE, dan tidak diperbolehkan kolom tabel lainnya.Fungsi ini tidak dapat digunakan bersama dengan klausa
GROUP BY,CLUSTER BY,DISTRIBUTE BY, atauSORT BY.
Sintaks
explode (<var>)Parameter
var: wajib. Nilainya harus bertipe array<T> atau map<K, V>.
Nilai Kembali
Baris hasil transposisi dikembalikan.
Contoh
Contoh 1: Tabel
t_table_mapberisi kolomc1 (BIGINT) dan t_map (MAP<STRING,BIGINT>). Data dalam tabel:+------------+-------+ | c1 | t_map | +------------+-------+ | 1000 | {k11:86, k21:15} | | 1001 | {k12:97, k22:2} | | 1002 | {k13:99, k23:1} | +------------+-------+Pernyataan contoh:
select explode(t_map) from t_table_map; -- Hasil berikut dikembalikan: +-----+------------+ | key | value | +-----+------------+ | k11 | 86 | | k21 | 15 | | k12 | 97 | | k22 | 2 | | k13 | 99 | | k23 | 1 | +-----+------------+Contoh 2: Hasil yang dikembalikan tidak termasuk baris yang hanya berisi data null.
-- Buat tabel. create table explod_array (arr array<string>); -- Masukkan data ke dalam tabel. insert into table explod_array values (array('1','2','3',null,'agb')), (array('1','2','3',null,'ag')), (null); -- Query data dari tabel. select * from explod_array; -- Hasil berikut dikembalikan: +------------+ | arr | +------------+ | ["1","2","3",null,"agb"] | | ["1","2","3",null,"ag"] | | NULL | +------------+ -- Tampilkan data. select explode(arr) from explod_array; -- Hasil yang dikembalikan tidak termasuk baris yang hanya berisi data null. +------------+ | col | +------------+ | 1 | | 2 | | 3 | | NULL | | agb | | 1 | | 2 | | 3 | | NULL | | ag | +------------+
Fungsi Terkait
EXPLODE adalah fungsi tipe kompleks. Untuk informasi lebih lanjut tentang fungsi-fungsi yang digunakan untuk memproses data tipe data kompleks seperti ARRAY, MAP, STRUCT, dan JSON, lihat Fungsi tipe kompleks.