2016-08-05 61 views
2

我試圖執行在蜂巢下面的查詢:HIVE:無法識別接近「不同」「(」

SELECT 
    regexp_replace('2016-08-05_11:29:46', '\\_', ' ') as tmstmp, 
    distinct(P.name) 
FROM table P; 

它拋出一個異常,說無法識別接近輸入「輸入不同的」「(」「P 「在選擇目標

在那裏,當我運行查詢互換的列,如:。。?

SELECT 
    distinct(P.name), 
    regexp_replace('2016-08-05_11:29:46', '\\_', ' ') as tmstmp 
FROM table P; 

它工作正常,任何想法,在這個問題上

回答

1

據我所知,這是由選擇語法中的配置單元施加的限制。 按照hive語言手冊中的Select語法,DISTINCT應該先按順序排在其他表達式之後。

參考: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select

我想原因是DISTINCT是行電平操作(即使其指定爲函數調用一列)和特別是在蜂房這將是一個精簡操作。

在SQL ANSI標準支持的數據庫引擎(如Mysql)中也可以觀察到類似的行爲。