我有这张桌子
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。
答案 0 :(得分:0)
在数组上使用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