gpt4 book ai didi

hadoop - 为什么 hive 不能识别在选择部分命名的别名?

转载 作者:可可西里 更新时间:2023-11-01 14:11:38 33 4
gpt4 key购买 nike

场景如下:当我如下调用 hql 时,它告诉我找不到 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)

这个问题与我尝试使用 count(*) as cnt 时的问题相同。谁能给我一些关于如何在 where 子句中使用别名的提示?非常感谢!

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'

最佳答案

where 子句在 select 子句之前求值,这就是为什么您不能在 where 子句中引用 select 别名的原因。

但是,您可以引用派生表中的别名。

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;

旁注:编写最后一个查询的更有效方法是

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

如果我没记错的话,你可以引用 having 中的别名,即 having cnt >= 2

关于hadoop - 为什么 hive 不能识别在选择部分命名的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028767/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com