在这种情况下,如何在Hive中加入多个表,我如何使用LATERAL VIEW?

时间:2018-06-07 17:56:44

标签: hive hiveql

我有这张桌子

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以获取该地点的名称?我不太了解HIVE。

1 个答案:

答案 0 :(得分:0)

在数组上使用lateral viewexplode,并使用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