Как переставить объединенные значения в столбцах в строки - PullRequest
0 голосов
/ 08 декабря 2018

Ввод:

item   number
ABC     123

Я хочу вывести вот так:

item   number
 A       1
 B       2
 C       3

1 Ответ

0 голосов
/ 08 декабря 2018

Разбейте свои строки, используя split(), взорвитесь, используя posexplode(), и используйте вид сбоку.Разделение на пустую строку '' сгенерирует массивы с дополнительными пустыми элементами, отфильтрует их, соединит элементы и числа по их позициям в массиве.

Демонстрация (замените подзапрос s вашей таблицей):

select i.itm as item, n.nbr as number
from
(--replace this subquery with your table
 --this is two rows example
select stack(2,'ABC', '123',
               'DEF', '456') as (item, number)   
) s --your_table  
lateral view posexplode(split(s.item,'')) i as pos, itm 
lateral view posexplode(split(s.number,'')) n as pos, nbr 
where i.itm!='' and n.nbr!='' and i.pos=n.pos ;  

Результат:

OK
item    number
A       1
B       2
C       3
D       4
E       5
F       6
Time taken: 0.094 seconds, Fetched: 6 row(s)
hive>
...