一个表中的每一行的HIVE连接另一个表的所有行



在表A中,我有从2014-01-012014-12-31 的日期

 action_date
 2014-01-01
 2014-01-02
 2014-01-03
 ...
 2014-12-31

在表B中,我有一些类似的信息

id name action_date deletion_date
1  nik  2013-01-01  2014-02-03
2  tom  2014-06-02  2014-06-30
3  lola 2013-12-30  2014-01-01
4  pete 2014-12-29  1970-01-01

如果activation_date<=action_date AND (action_date<=deletion_date OR deletion_date='1970-01-01') ,我想将B表中的行连接到每个A表行

例如

 action_date id name action_date deletion_date
 2014-01-01  1  nik  2013-01-01  2014-02-03
 2014-01-01  3  lola 2013-12-30  2014-01-01
 2014-01-02  1  nik  2013-01-01  2014-02-03
 2014-01-03  1  nik  2013-01-01  2014-02-03
   [...]
 2014-02-03  1  nik  2013-01-01  2014-02-03
 2014-06-02  2  tom  2014-06-02  2014-06-30
 2014-06-03  2  tom  2014-06-02  2014-06-30
   [...]
 2014-06-03  2  tom  2014-06-02  2014-06-30
 2014-12-29  4  pete 2014-12-29  1970-01-01 
 2014-12-30  4  pete 2014-12-29  1970-01-01 
 2014-12-31  4  pete 2014-12-29  1970-01-01

我尝试在Hive和PostgreSQL中使用next查询。

   SELECT a.action_date, b.*
   FROM  b
   JOIN  a ON action_date>= activation_date
           AND (action_date<=deletion_date OR deletion_date='1970-01-01')

在PostgreSQL中运行良好,但在Hive中返回semanticexception [error 10017]: line 16:3 both left and right aliases encountered in join 'action_date'

如何在蜂巢中解决这个问题?

根据错误,由于两个表中的列名相同,因此出现了问题。对表使用别名,在条件下,使用别名。。这将解决问题。

最新更新