SQL中的动态聚合(Hive)

时间:2018-08-21 21:47:27

标签: hadoop hive aggregation

我有两个桌子。具有3列的表A:用户ID,开始日期和结束日期。表B带有事件和日期时间戳。我想将表B汇总到基于表A的开始日期和结束日期之间的日期时间。所以类似...

select a.userid, count(distinct b.eventid) as events
from table a
inner join table b
on a.userid=b.userid
and b.datetime between a.starttime and b.endtime
group by a.userid

但是Hive不喜欢那个……我正在使用Hadoop HortonWorks。不胜感激!

1 个答案:

答案 0 :(得分:1)

between条件移动到where,因为在版本2.2.0之前仅支持join中的相等条件。

From Hive documentation

  

从Hive 2.2.0开始,支持ON子句中的复杂表达式(请参阅HIVE-15211,HIVE-15251)。在此之前,Hive不支持不是相等条件的联接条件。