Why can't hive recognize alias named in select part?

The where clause is evaluated before the select clause, which is why you can't refer to select aliases in your where clause.

You can however refer to aliases from a derived table.

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;

Side note: a more efficient way to write the last query would be

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

If I remember correctly, you can refer to the alias in having i.e. having cnt >= 2


I was able to use Alias in my Hive select statement using backtick symbol ``.

SELECT COL_01 AS `Column_A`;

The above solution worked for Hive version 1.2.1.

reference link

Tags:

Hadoop

Hql

Hive