Todos los productos
Search
Centro de documentos

MaxCompute:EXPLODE

Última actualización: Sep 22, 2026

Transpone una fila de datos en varias filas. Esta función es una función de tabla con valores definidos por el usuario (UDTF).

Notas de uso

  • Si el valor del parámetro es de tipo array<T>, el arreglo almacenado en la columna se transpone en varias filas.

  • Si el valor del parámetro es de tipo map<K, V>, cada par clave-valor del mapa almacenado en la columna se transpone en una fila con dos columnas. Una columna almacena las claves y la otra almacena los valores.

  • Si una fila contiene únicamente datos nulos, esta función no devuelve una fila que contenga solo datos nulos.

Límites

  • Una instrucción SELECT puede contener solo una función EXPLODE. No se permiten otras columnas de la tabla.

  • Esta función no se puede usar junto con las cláusulas GROUP BY, CLUSTER BY, DISTRIBUTE BY ni SORT BY.

Sintaxis

explode (<var>)

Parámetros

var: obligatorio. El valor debe ser de tipo array<T> o map<K, V>.

Valor devuelto

Devuelve las filas después de la transposición.

Ejemplos

  • Ejemplo 1: La tabla t_table_map contiene las columnas c1 (BIGINT) and t_map (MAP<STRING,BIGINT>). A continuación se muestran los datos de la tabla:

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

    Instrucción de ejemplo:

    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          |
    +-----+------------+
  • Ejemplo 2: El resultado devuelto no incluye ninguna fila que contenga únicamente datos 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         |
    +------------+
                        

Funciones relacionadas

EXPLODE es una función de tipos complejos. Para obtener más información sobre las funciones que procesan datos de tipos complejos, como ARRAY, MAP, STRUCT y JSON, consulte Complex type functions.