Hive Group By 常見錯誤


Expression not in GROUP BY key ‘ xxx’

遇到這么一個需求,輸入數據為一個ID對應多個name,要求輸出數據為ID是唯一的,name隨便取一個就可以。

執行以下hive ql語句:

會報錯:

查了一下,HIVE有這么一個函數collect_set,類似於mysql的group_concat函數,把每個分組的其他字段,按照逗號進行拼接,得到一個最終字符串:

將上述的QL語句改一下:

結果是這樣的:

這個時候,我們就可以針對第二列做一些計數、求和操作,分別對應到Hive的聚合函數count、sum。

對應到本文的目的,直接從數組獲取第一個元素就達到目的了,這樣做:

結果如下:

總結:

  1. Hive不允許直接訪問非group by字段;
  2. 對於非group by字段,可以用Hive的collect_set函數收集這些字段,返回一個數組;
  3. 使用數字下標,可以直接訪問數組中的元素;

參考文章:http://wangjunle23.blog.163.com/blog/static/117838171201310222309391/

本文地址:http://www.crazyant.net/1600.html


免責聲明!

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



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