首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化hive的计算效率?

如何简化hive的计算效率?
EN

Stack Overflow用户
提问于 2018-03-01 10:48:32
回答 1查看 47关注 0票数 1

代码在配置单元上运行:

代码语言:javascript
复制
select day,count(mdn)*5 as number from
(select distinct a.mdn,a.day from 
flow a
left outer join
flow b
on a.day=date_add(b.day,-1) and a.mdn=b.mdn
left outer join
flow c
on a.day=date_add(c.day,-2) and a.mdn=c.mdn
left outer join
flow d
on a.day=date_add(d.day,-3) and a.mdn=d.mdn
where b.mdn is null  and c.mdn is null  and d.mdn is null)t 
group by day

代码的逻辑是选择今天没有出现在未来三天的mdn,并计算mdn.But的数量,这个代码的效率很低,因为三次join都有相同的大表流。如何高效地简化它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 10:53:33

那么,您可以使用lead()查看第二天,并比较日期时间:

代码语言:javascript
复制
select f.*
from (select f.*,
             lead(f.day) over (partition by f.mdn order by f.day) as next_day
      from flow f
     ) f
where next_day > date_add(day, 3) or next_date is null;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49041858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档