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
explodepor cláusulaselecte não inclua outras colunas da tabela.Não utilize esta função com
group by,cluster by,distribute byousort 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_mapcom os camposc1 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.