Hive - 选择多个表而不加入

时间:2015-10-19 04:52:04

标签: hive

我有一张只有一列" tgt_dt"和10条记录:日期" 2015-09-01",日期" 2015-02-01",日期" 2015-08-10"等。

我需要使用这些日期作为条件来选择花药表。即,在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, A,B, C

蜂巢中最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在这里进行笛卡尔联盟:

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