Warum kann der im ausgewählten Teil benannte Alias ​​nicht erkannt werden?

7

Hier ist das Szenario: Wenn ich hql wie folgt aufruft, sagt es mir, dass es keinen Alias ​​für u1 finden kann.

%Vor%

Dieses Problem ist das gleiche wie wenn ich versuche, count(*) as cnt zu benutzen. Könnte mir jemand einen Hinweis geben, wie man den Alias ​​in where-Klausel verwendet? Vielen Dank!

%Vor%     
Judking 25.09.2014, 00:47
quelle

2 Antworten

20

Die where -Klausel wird vor der select -Klausel ausgewertet, weshalb Sie in Ihrer where-Klausel nicht auf ausgewählte Aliase verweisen können.

Sie können jedoch auf Aliase aus einer abgeleiteten Tabelle verweisen.

%Vor%

Randnotiz: Ein effizienterer Weg zum Schreiben der letzten Abfrage wäre

%Vor%

Wenn ich mich richtig erinnere, können Sie sich auf den Alias ​​in having , also having cnt >= 2

beziehen     
FuzzyTree 25.09.2014, 03:58
quelle
0

Ich konnte Alias ​​in meiner Hive-Select-Anweisung mit dem Backtick-Symbol '' verwenden.

%Vor%

Die obige Lösung funktionierte für Hive Version 1.2.1.

Referenzlink

    
kumsgs 16.02.2018 12:41
quelle

Tags und Links