我在hive中进行查询构建,下面给出了查询。
*
Select * from CSS407
LEFT OUTER JOIN PROD_CORE.SERV_ACCT_ISVC_LINK SASP
ON CSS407.TABLE_ABBRV_CODE = 'SACT'
AND CSS407.EVENT_ITEM_REF_NUM = SASP.Serv_Acct_Id
AND to_date(CSS407.EVENT_RTS_VAL) >= SASP.Acct_Serv_Pnt_Strt_Dt
AND to_date(CSS407.EVENT_RTS_VAL) < SASP.Acct_Serv_Pnt_End_Dt
LEFT OUTER JOIN PROD_CORE.CUST_ACCT_SA_LINK ASA
ON CSS407.TABLE_ABBRV_CODE = 'SACT'
AND CSS407.EVENT_ITEM_REF_NUM = ASA.Serv_Acct_Id
AND CSS407.EVENT_RTS_VAL_UTC_DTTM >= ASA.Acct_Relt_Strt_Dttm
AND CSS407.EVENT_RTS_VAL_UTC_DTTM < ASA.Acct_Relt_End_Dttm
LEFT OUTER JOIN PROD_CORE.CUST_SA_LINK ASAT
ON CSS407.TABLE_ABBRV_CODE = 'TACT'
AND CSS407.EVENT_ITEM_REF_NUM = ASAT.Serv_Acct_Id
AND CSS407.EVENT_RTS_VAL_UTC_DTTM >= ASAT.Acct_Relt_Strt_Dttm
AND CSS407.EVENT_RTS_VAL_UTC_DTTM < ASAT.Acct_Relt_End_Dttm
*
当我在hive中执行上表时,我收到以下错误
“JOIN'SASP'中遇到左右别名”
在进一步调查中,我发现我们不能在连接条件下使用过滤器之间的日期。在每个帖子中,每个人都要求将该过滤器插入到where条件中。
但是在我们的情况下,如果我们将过滤器之间的日期移动到where条件,那么我们就没有得到任何数据,因为左外连接不满意。
我在HIVE中执行时遇到此问题,它在Teradata和oracle中工作正常
请帮忙。
答案 0 :(得分:0)
只有等式(=)在Hive.Move &lt; = 中的连接条件中适用于where子句。
我之前有类似的问题。请查看下面的帖子。
Hive Select MAX() in Join Condition
希望这有帮助。
答案 1 :(得分:-1)
CSS407和SERV_ACCT_ISVC_LINK之间可能存在一些可能会产生此错误的常见列。