Hive 配置单元-选择多个不带联接的表
我的表格只有一列“tgt_dt”和10条记录:日期“2015-09-01”、日期“2015-02-01”、日期“2015-08-10”等 我需要用这些日期作为条件,从另一张表中进行选择。i、 e,在sql中,我只需执行以下操作:Hive 配置单元-选择多个不带联接的表,hive,Hive,我的表格只有一列“tgt_dt”和10条记录:日期“2015-09-01”、日期“2015-02-01”、日期“2015-08-10”等 我需要用这些日期作为条件,从另一张表中进行选择。i、 e,在sql中,我只需执行以下操作: select T2.tgt_dt, A,B, C,sum(D) from TableA T1, TableB T2 where T1.date between T2.tgt_dt - 90 and T2.tgt_dt group by T2.tgt_dt,
select T2.tgt_dt, A,B, C,sum(D)
from TableA T1,
TableB T2
where T1.date between T2.tgt_dt - 90 and T2.tgt_dt
group by T2.tgt_dt, A,B, C
在hive中执行此操作的最佳方法是什么?您可以在此处执行笛卡尔连接:
select T2.tgt_dt, A,B, C,sum(D)
from
TableA T1
JOIN
TableB T2
where T1.date between T2.tgt_dt - 90 and T2.tgt_dt
group by T2.tgt_dt, A,B, C
如果您想要更有效的方法,您可以采取以下措施:
select b.tgt_dt, A,B, C,sum(D)
from
TableA T1
LATERAL VIEW explode(array('date1','date2','date3')) b as tgt_dt
where T1.date between b.tgt_dt - 90 and b.tgt_dt
group by b.tgt_dt, A,B, C
你的第一个答案实际上和我的问题一样,蜂巢不支持不平等连接,我相信它不是不平等连接,它是笛卡尔连接,蜂巢应该支持哪个。你是对的,我的错误,蜂巢在后来的版本中添加了“中间”,我忘了这一点。