Транспонировать набор данных в Hive - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь транспонировать переменную в Hive, такую ​​как:

Id1  Id2 Event
 1    1   7
 2    2   3
 2    2   7

в

 Id1  Id2 Event_7 Event_3
  1    1   1
  2    2   1        1

Вот что у меня есть:

 create temporary table event_trans as 
           select Id1, Id2,Event
           kv['3'] as Event_3,
           kv['7'] as Event_7
           from(
             select Id1, Id2, collect(Event, '1') as kv
             from event1
             group by Id1, Id2

             )t

Ошибка: ошибка при компиляции оператора: FAILED: в строке ParseException 1:84 отсутствует EOF в '[' возле 'kv'

Мне также интересно узнать, как транспонировать набор данных в Hive с дубликатами, например, с одинаковым выводом:

Id1  Id2 Event
 1    1   7
 2    2   3
 2    2   7
 2    2   7

до

 Id1  Id2 Event_7 Event_3
  1    1   1
  2    2   1        1

Благодарим за любую помощь!

1 Ответ

1 голос
/ 15 января 2020

В Hive SQL вы можете выполнить условное агрегирование:

select 
    id1,
    id2,
    max(case when event = 7 then 1 end) event_7,
    max(case when event = 3 then 1 end) event_3
group by id1, id2
order by id1, id2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...