В Hive, как объединить несколько строк из объединенной таблицы в один массив JSON в первой таблице? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть две таблицы следующим образом:

users table
==========================  
| user_id   name     age |  
|=========================  
|  1        pete      20 |  
|  2        sam       21 |  
|  3        nash      22 |  
==========================

hobbies table
=========================
| user_id   hobby       |
|========================
|  1        football    |
|  1        running     |
|  1        basketball  |
=========================

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

{ "user_id":1, "name":"pete", "hobbies":["football", "running", "basketball"] }

1 Ответ

1 голос
/ 09 мая 2019

Присоединяйтесь к таблицам и используйте collect_list, чтобы получить хобби для пользователя в array.

select u.user_id,u.name,collect_list(h.hobby) as hobbies
from users u
join hobbies h on u.user_id=h.user_id
group by u.user_id,u.name

. Используйте collect_set, чтобы получить уникальные значения в случае дублирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...