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
SELECTpuede contener solo una funciónEXPLODE. 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 BYniSORT 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_mapcontiene las columnasc1 (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.