2016-08-05 58 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)中也可以观察到类似的行为。