在这种情况下,如何在配置单元中连接多个表的情况下使用横向视图?

lndjwyie  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(584)

我有这张table

  1. table 1
  2. id, array<string>(place_id)
  3. 1, [1 ,2]
  4. 2, [2, 3]
  5. table 2 (Metadata)
  6. id, some_meta
  7. table 3 (Places)
  8. 1, Name1
  9. 2, Name2
  10. 3, Name3

我想把这些表合并成这样。

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

我现在被困在from子查询中。

  1. FROM
  2. table1 t1
  3. JOIN table2 t2 ON t1.id = t2.id

这就是我目前的情况。如何加入 t1.place_idstable3 想知道那个地方的名字?我不太了解Hive。

gopyfrb3

gopyfrb31#

使用 lateral viewexplode 并使用 join .

  1. select t1.id,concat_ws(',',collect_list(t3.places)),t2.some_meta
  2. from (select id,places
  3. from table1
  4. lateral view explode(place_id) tbl as places
  5. ) t1
  6. join t2 on t1.id=t2.id
  7. join t3 on t1.places=t3.id
  8. group by t1.id,t2.some_meta

相关问题