hive-检查表的每一行中的数组是否在另一个表的某一列中包含任何匹配的数据

u5i3ibmn  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(324)

我有两个带有列的表,如下所示。

Posts:
user STRING,
tag_list ARRAY<STRING>

Tags:
tag STRING

下面是这些表中的一些示例数据。

Posts:
user1   help, pig
user2   bigdata, hadoop, query, hiveql
user1   hive, hiveql, help

Tags:
hadoop
hiveql

如果我只想筛选出posts表中包含在tags表中列出的标记的行,如下面的结果所示,那么在配置单元查询中该如何做呢?我不知道如何使用array\ u contains连接这两个表。

Expected Query Result:
user2   bigdata, hadoop, query, hiveql
user1   hive, hiveql, help

谢谢

avwztpqn

avwztpqn1#

我可以通过这个查询得到预期的结果。

select distinct b.user, b.tag_list from 
(select tag from tags) a
join
(select user, tag_list, exp from posts
lateral view explode(tag_list) exploded_table as exp) b
on (a.tag = b.exp);

相关问题