2017-03-08 8 views
0

Die erste Abfrage funktioniert gut. Aber die zweite Abfrage gibt den Fehler "[Fehler 10025] Ausdruck nicht in GROUP BY Schlüssel '' -3 ''". Ich habe verwandte Beiträge gelesen und bin mir bisher nicht sicher, wie ich den Fehler beheben kann.Hive [Fehler 10025] Ausdruck nicht in GROUP BY

Vielen Dank für Ihre Hilfe zu diesem Thema.

Abfrage # 1

SELECT case when user_id = '-3' then cast(order_id as varchar(255)) else user_id end as user_id2 
from orders 
where user_id = '-3' 

Abfrage # 2

SELECT case when user_id = '-3' then cast(order_id as varchar(255)) else user_id end as user_id2 
     ,sum(order_value) as sales 
from orders 
group by 1 


Traceback (most recent call last): 
File "/home/net1/liulu001/conversant/troubleshooting_userid.py", line 28, in <module> 
cursor.execute(q) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 302, in execute 
configuration=configuration) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 343, in execute_async 
self._execute_async(op) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 362, in _execute_async 
operation_fn() 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 340, in op 
async=True) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 1027, in execute 
return self._operation('ExecuteStatement', req) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 957, in _operation 
resp = self._rpc(kind, request) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 925, in _rpc 
err_if_rpc_not_ok(response) 
File "/home/net1/liulu001/.local/lib/python2.6/site-packages/impala/hiveserver2.py", line 704, in err_if_rpc_not_ok 
raise HiveServer2Error(resp.status.errorMessage) 
impala.error.HiveServer2Error: Error while compiling statement: FAILED:  SemanticException [Error 10025]: Line 3:13 Expression not in GROUP BY key ''-3'' 

Antwort

0

Sie sind nicht in der ersten Abfrage aggregiert, so wird die group by nicht erforderlich. In der zweiten Abfrage wird group by 1 als Konstante behandelt. Verwenden Sie stattdessen group by case when user_id = '-3' then cast(order_id as varchar(255)) else user_id end.

Oder wenn Sie möchten, dass Ihre Spaltennamen in der Lage sein von Position zu verweisen, anstatt mit Namen, dann versuchen Sie dies vor Ihrer Suchanfrage:

set hive.groupby.orderby.position.alias=true; 
+0

Danke. Ich dachte, ich habe versucht, die Gruppe nach Syntax zu verwenden, die Sie vorgeschlagen haben, und ähnliche Fehler bekommen. Aber ich habe es gerade nochmal ausprobiert und es hat gut funktioniert. Also Problem gelöst. Danke noch einmal! –

+0

Also, bist du mit meiner Antwort zufrieden? Dann stimme bitte ab oder akzeptiere oder schlage vor, wie ich die Antwort bitte verbessern kann. – leftjoin

+0

Ja, mit der Antwort zufrieden. Nur als nützlich gewählt. Ich denke, die 0 änderte sich erst, als die Stimmen eine bestimmte Schwelle erreichten. Danke noch einmal! –

Verwandte Themen