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

rev*_*rev 4 sql hadoop hive bigdata hiveql

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

Posts:
user STRING,
tag_list ARRAY<STRING>

Tags:
tag STRING
Run Code Online (Sandbox Code Playgroud)

以下是这些表中的一些示例数据.

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

Tags:
hadoop
hiveql
Run Code Online (Sandbox Code Playgroud)

如果我只想过滤掉Posts表中包含Tags表中列出的标签的行,如下面的结果所示,我将如何在hive查询中执行此操作?我不确定如何使用array_contains连接这两个表.

Expected Query Result:
user2   bigdata, hadoop, query, hiveql
user1   hive, hiveql, help
Run Code Online (Sandbox Code Playgroud)

谢谢

rev*_*rev 5

我能够通过此查询获得预期的结果.

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);
Run Code Online (Sandbox Code Playgroud)