Warum können die nicht hive erkennen alias-Namen im select-Teil?
Hier ist das Szenario: Wenn ich rufe hql wie folgt, er sagt mir, dass es nicht finden können, einen alias für u1.
hive> select user as u1, url as u2 from rank_test where u1 != "";
FAILED: SemanticException [Error 10004]: Line 1:50 Invalid table alias or column reference 'u1': (possible column names are: user, url)
Dieses problem ist das gleiche wie wenn ich versuche, mit count(*) as cnt
. Könnte mir jemand einen Hinweis, wie alias in der where-Klausel? Vielen Dank!
hive> select user, count(*) as cnt from rank_test where cnt >= 2 group by user;
FAILED: ParseException line 1:58 missing EOF at 'where' near 'user'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
where
- Klausel ausgewertet, bevor dieselect
Klausel, die ist, warum können Sie nicht finden wählen Sie Aliase in Ihrer where-Klausel.Können Sie beziehen sich jedoch auf Aliase aus einer abgeleiteten Tabelle.
Seite Hinweis: für eine effizientere Art zu schreiben, die letzten Abfrage wäre
Wenn ich mich richtig erinnere, können Sie das alias in
having
d.h.having cnt >= 2
having
.War ich in der Lage, um den Alias zu verwenden, in meinem Hive select-Anweisung mit Graviszeichen `.
Die oben genannte Lösung funktionierte für Hive-version 1.2.1.
Referenz-link
SELECT COL_01 AS `Column_A` where Column_A = "Test"
; kann nicht arbeiten.