Todos os produtos
Search
Central de documentação

MaxCompute:EXPLODE

Última atualização: Sep 22, 2026

Transpõe uma linha de dados em várias linhas. Esta função é uma função definida pelo usuário que retorna uma tabela (UDTF).

Notas de uso

  • Se o valor do parâmetro for do tipo array<T>, a função transpõe o array armazenado na coluna em várias linhas.

  • Se o valor do parâmetro for do tipo map<K, V>, a função transpõe cada par chave-valor do mapa armazenado na coluna em uma linha com duas colunas. Uma coluna armazena as chaves e a outra armazena os valores.

  • Caso uma linha contenha apenas dados nulos, a função não retorna uma linha com apenas dados nulos.

Limites

  • Uma instrução SELECT pode conter apenas uma função EXPLODE e não permite a inclusão de outras colunas da tabela.

  • Não é possível usar esta função com as cláusulas GROUP BY, CLUSTER BY, DISTRIBUTE BY ou SORT BY.

Sintaxe

explode (<var>)

Parâmetros

var: obrigatório. O valor deve ser do tipo array<T> ou map<K, V>.

Valor de retorno

Retorna as linhas após a transposição.

Exemplos

  • Exemplo 1: A tabela t_table_map contém as colunas c1 (BIGINT) and t_map (MAP<STRING,BIGINT>). Dados da tabela:

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

    Instrução de exemplo:

    select explode(t_map) from t_table_map;
    -- The following result is returned: 
    +-----+------------+
    | key | value      |
    +-----+------------+
    | k11 | 86         |
    | k21 | 15         |
    | k12 | 97         |
    | k22 | 2          |
    | k13 | 99         |
    | k23 | 1          |
    +-----+------------+
  • Exemplo 2: O resultado retornado não inclui uma linha que contenha apenas dados nulos.

    -- Create a table.
    create table explod_array (arr array<string>);
    -- Insert data into the table.
    insert into table explod_array values (array('1','2','3',null,'agb')),
                                          (array('1','2','3',null,'ag')),
                                          (null);
    -- Query data from the table.
    select * from explod_array;
    -- The following result is returned:
    +------------+
    | arr        |
    +------------+
    | ["1","2","3",null,"agb"] |
    | ["1","2","3",null,"ag"] |
    | NULL       |
    +------------+
    -- Display data.
    select explode(arr) from explod_array;
    -- The returned result does not include a row that contains only the null data.
    +------------+
    | col        |
    +------------+
    | 1          |
    | 2          |
    | 3          |
    | NULL       |
    | agb        |
    | 1          |
    | 2          |
    | 3          |
    | NULL       |
    | ag         |
    +------------+
                        

Funções relacionadas

A função EXPLODE é uma função de tipo complexo. Para mais informações sobre as funções usadas no processamento de tipos de dados complexos, como ARRAY, MAP, STRUCT e JSON, consulte Funções de tipos complexos.