tables hadoop hive hql

hadoop - tables - ¿Por qué no puede colmenar reconocer alias nombrado en la parte seleccionada?



hiveql (1)

La cláusula where se evalúa antes que la cláusula select , que es la razón por la que no puede hacer referencia a seleccionar alias en su cláusula where.

Sin embargo, puede referirse a los alias de una tabla derivada.

select * from ( select user as u1, url as u2 from rank_test ) t1 where u1 <> ""; select * from ( select user, count(*) as cnt from rank_test group by user ) t1 where cnt >= 2;

Nota al margen: una forma más eficiente de escribir la última consulta sería

select user, count(*) as cnt from rank_test group by user having count(*) >= 2

Si recuerdo correctamente, puede referirse al alias en having es decir, having cnt >= 2

Este es el escenario: cuando invoco hql de la siguiente manera, me dice que no puede encontrar alias para 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)

Este problema es el mismo que cuando intento usar count(*) as cnt . ¿Alguien podría darme alguna pista sobre cómo usar alias en where clause? ¡Muchas gracias!

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''