Hive系列-巧用开窗函数解决分组Top-K问题

最近遇到一个需求,要将数据分组,然后取每组最新的数据,刚开始各种join操作,都很繁杂,对于大数据量来说,实为不妥,计算总是超过了300多秒。于是干脆直接用了开窗

select t.field1,field2,field3,field4
        from(
        select field1,field2,field3,field4,rank() over(partition by field1,field2 order by create_time desc) as ranks
            from TABLE
            where date='20200515'
        ) t
        where ranks=1 -- 取最新

子查询对其进行分组降序排序,然后外查询直接筛选出第一行数据即可
对于Top-K的话,可以将where字句改一改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满锅lock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值