Как использовать LATERAL VIEW в этой ситуации с объединением нескольких таблиц в Hive? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть эта таблица

table 1
id, array<string>(place_id)
1, [1 ,2]
2, [2, 3]

table 2 (Metadata)
id, some_meta

table 3 (Places)
1, Name1
2, Name2
3, Name3

Я хочу присоединиться к этим таблицам, чтобы выглядеть примерно так.

id, places, some_meta
1, "Name1, Name2", some_meta
2, "Name2, Name3", some_meta

Я застрял в подзапросе FROM.

FROM
  table1 t1
  JOIN table2 t2 ON t1.id = t2.id

Это то, что я имею до сих пор.Как мне присоединиться t1.place_ids к table3, чтобы получить название места?Я не очень хорошо знаю ВИЧ.

1 Ответ

0 голосов
/ 07 июня 2018

Используйте lateral view с explode для массива и используйте значения для join.

select t1.id,concat_ws(',',collect_list(t3.places)),t2.some_meta
from (select id,places
      from table1
      lateral view explode(place_id) tbl as places
     ) t1
join t2 on t1.id=t2.id
join t3 on t1.places=t3.id
group by t1.id,t2.some_meta
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...