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
SELECTpode conter apenas uma funçãoEXPLODEe 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 BYouSORT 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_mapcontém as colunasc1 (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.