Todos os produtos
Search
Central de documentação

MaxCompute:EXPLODE

Última atualização: Jul 04, 2026

UDTF que transforma uma linha de dados em várias linhas.

Observações

  • Se o parâmetro for do tipo array<T>, a função converte o ARRAY armazenado na coluna em múltiplas linhas.

  • Para parâmetros do tipo map<K, V>, a função converte cada par chave-valor do MAP na coluna em uma linha com duas colunas: uma para a chave e outra para o valor.

  • Valores NULL presentes na tabela não são retornados como linhas individuais.

Limitações de uso

  • Use apenas uma função explode por cláusula select e não inclua outras colunas da tabela.

  • Não utilize esta função com group by, cluster by, distribute by ou sort by.

Formato do comando

explode (<var>)

Descrição dos parâmetros

var: obrigatório. Aceita os tipos array<T> ou map<K, V>.

Valor de retorno

Retorna as linhas resultantes da transformação.

Exemplos de uso

  • Exemplo 1: Considere a tabela t_table_map com os campos c1 bigint, t_map map<string,bigint> e os seguintes dados:

      +------------+-------+
    | c1         | t_map |
    +------------+-------+
    | 1000       | {k11:86, k21:15} |
    | 1001       | {k12:97, k22:2} |
    | 1002       | {k13:99, k23:1} |
    +------------+-------+

    Execute o comando a seguir.

    select explode(t_map) from t_table_map;
    --返回结果如下。
    +-----+------------+
    | key | value      |
    +-----+------------+
    | k11 | 86         |
    | k21 | 15         |
    | k12 | 97         |
    | k22 | 2          |
    | k13 | 99         |
    | k23 | 1          |
    +-----+------------+
  • Exemplo 2: Linhas contendo apenas NULL não aparecem no resultado final.

    --创建表
    create table explod_array (arr array<string>);
    --插入数据
    insert into table explod_array values (array('1','2','3',null,'agb')),
                                          (array('1','2','3',null,'ag')),
                                          (null);
    --查询数据
    select * from explod_array;
    --返回:
    +------------+
    | arr        |
    +------------+
    | ["1","2","3",null,"agb"] |
    | ["1","2","3",null,"ag"] |
    | NULL       |
    +------------+
    --展开数据
    select explode(arr) from explod_array;
    --返回结果里没有包括单独的NULL行数据
    +------------+
    | col        |
    +------------+
    | 1          |
    | 2          |
    | 3          |
    | NULL       |
    | agb        |
    | 1          |
    | 2          |
    | 3          |
    | NULL       |
    | ag         |
    +------------+
                        

Funções relacionadas

A função EXPLODE pertence ao grupo de funções de tipos complexos. Para consultar outras funções de processamento de dados de tipos complexos (como ARRAY, MAP, STRUCT e JSON), consulte Complex type functions.