hive報錯Unsupported SubQuery Expression Invalid subquery. Subquery in UDAF is not allowed.


 

Error while compiling statement: FAILED: SemanticException org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: Unsupported SubQuery Expression Invalid subquery. Subquery in UDAF is not allowed.

在hive中in、not in不支持子查詢

例子

select DISTINCT userid FROM TABLE_A AS a WHERE a.dt >= '20200209' AND a.userid 
NOT IN  (SELECT DISTINCT userid FROM TABLE_B AS b WHERE b.dt >= '20200209');

  

改寫方法1 :用left join連接

select DISTINCT a.userid FROM TABLE_A AS  a left JOIN  TABLE_B AS b
on a.userid=b.userid
WHERE b.userid is NULL;

使用left jion示例一下,左聯以后,加上b表userid為空的條件,就可以實現例子的需求

改寫方法2: 用exists 

select DISTINCT a.userid FROM TABLE_A AS a WHERE a.dt >= '20200209' 
AND NOT EXISTS  
(SELECT DISTINCT b.userid FROM TABLE_B AS b WHERE b.dt >= '20200209' AND a.userid = b.userid);

  where后面使用NOT EXISTS 時候,不需要跟着字段

 

來源:https://www.jianshu.com/p/4c1e0b426ed5

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM