gpt4 book ai didi

sql - 针对聚合列的Hive查询优化在select语句中出现一次

转载 作者:行者123 更新时间:2023-12-02 21:06:25 30 4
gpt4 key购买 nike

如果一次选择中有多个汇总列,则将只评估一次?例如:

select
date,
count(userid) as uv,
sum(isclick) as clickcnt,
count(userid) / sum(isclick) as ctr
from
user_access_log
group by
1

这里 count(userid)sum(isclick)都使用了两次,它们将被评估两次还是仅评估一次,hive是否会进行查询优化?

最佳答案

这个评论太长了。

没关系。运行聚合查询的开销几乎完全是将各组的行放在一起。在大多数情况下,聚合本身并不昂贵。

一个异常(exception)是count(distinct)(好吧,distinct具有任何形式)。这需要更多的开销。

如果您确实只想运行一次聚合,则可以使用子查询:

select ual.*, (uv / clickcnt) as ctr
from (select date, count(userid) as uv, sum(isclick) as clickcnt,
from user_access_log
group by 1
) ual;

老实说,我怀疑您实际上需要 count(distinct userid),因此这可能会对性能有所改善。

关于sql - 针对聚合列的Hive查询优化在select语句中出现一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736942/

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