全部产品
Search
文档中心

MaxCompute:EXPLODE

更新时间:Jul 02, 2025

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 SELECT hanya dapat berisi satu fungsi EXPLODE, dan tidak diperbolehkan kolom tabel lainnya.

  • Fungsi ini tidak dapat digunakan bersama dengan klausa GROUP BY, CLUSTER BY, DISTRIBUTE BY, atau SORT 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_map berisi kolom c1 (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.