2021-05-28-Hive-21(求取前10%的四种方法)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-28-Hive-21(求取前10%的四种方法)相关的知识,希望对你有一定的参考价值。
参考技术A 一般的求取前20%,就是使用两个窗口函数,如下获取这种写法是一般的写法,当然也可以把count放在where那,来获取总的行数
hive中提供了一个非常有用的函数桶函数,把全部的数据分成5个桶获取第一个桶即可
percentile_approx / percentile -- spark
approx_percentile -- presto
kylin
percentile_approx(order_price, array(0.1,0.5,0.75,0.95),9999) over(order by order_price asc )
按照降序,获取中位数,和学过的窗口函数order by排序功能一样,局部的中位数
要想获取全局的中位数直接over()为空即可,在遇到数据倾斜可能失效,使用这个函数和前面的窗口写法获取的大差不差
这类小样本的问题是不能使用上面的三种方法的,可能有的分区只有几条数据,根本就不满足20%的条件,或者是由于样本太小,第20%不存在,还有一种就是特定需求
说一下这个需求的背景,销售排行榜上,我需要对四分位的销售者给予激励,这类销售者具备较大的潜力
有三种方法来解决这个问题,由于20%不存在,那么我们取20%-25%都是可以接受的,在窗口写法的基础上,排个序获取后几位即可,最后一种方法就是在窗口的写法上嵌套一层偏移量函数
以上是关于2021-05-28-Hive-21(求取前10%的四种方法)的主要内容,如果未能解决你的问题,请参考以下文章