【问题标题】:Hive - Checking if an array in each row of a table contains any matching data in a column in another tableHive - 检查表的每一行中的数组是否包含另一个表的列中的任何匹配数据
【发布时间】:2014-02-18 18:40:54
【问题描述】:

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

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 表中列出的标签的行,如下面的结果所示,我将如何在 hive 查询中执行此操作?我不确定如何使用 array_contains 连接这两个表。

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

谢谢

【问题讨论】:

    标签: sql hadoop hive bigdata hiveql


    【解决方案1】:

    我能够通过这个查询得到预期的结果。

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      相关资源
      最近更新 更多