如何在hive中根据用户名和最大日期从两个表中检索完整的数据

pdtvr36n  于 2021-06-29  发布在  Hive
关注(0)|答案(1)|浏览(313)

例如,我有一个表a和表b,其中包含以下数据:
答:

user_name date1 count1 count2
X          15     1      1
X          30     1      3
Y          04     1      3

第二:

user_name date1 count3 count4 status
X          15     11     1      Y
X          30     13     3      N
Y          04     16     3      NA

如何为每个feedname和max date连接这两个表。我需要这样的输出:

username date1 count1 count4 status
X         30    1      3        N

就像这样。在这种情况下谁能帮忙。

jdzmm42g

jdzmm42g1#

因为根据您的注解,每个组合(用户名,日期1)都存在于两个表中,所以您可以使用。

select a.*, b.count3, b.count4, b.status 
from tableA as a
join tableB as b
on a.user_name = b.user_name and   
   a.date1 = b.date1 
where not exists 
   (select 1 from tableA as a1
    where a1.user_name = a.user_name
      and a1.date1 > a.date1);

你想在上面有索引吗 (user_name, date1) 加快速度。
作为旁注:如果 tableA 在中正好有一个条目 tableB 反之亦然(从你的描述中不清楚是否是这样,但看起来是这样),因此 (user_name, date1) 如果这两个表都是主键,则绝对应该添加列 count3 , count4 以及 statustableA 把它扔掉 tableB . 您仍然可以使用上面的代码(没有 join )仅查找每个用户的最大条目。

相关问题