在观察数据的大致分布时,分位数是个常用的统计值,下面介绍在hive sql中计算分位数的语法
hive sql中计算分位数的函数:PERCENTILE_APPROX(适用于大数据量)
array<double> percentile_approx (double <colname>, array(<p1> [, <p2>...]) [, <B>])
- 参数说明
colname:必填。值为DOUBLE类型的列。 p:必填。需要近似的百分位数。取值为[0.0,1.0]。 B:精度参数。精度越高产生的近似值误差越小。如果不设置该参数,默认值为10000。当colname中值的数目小于B时,将给出精确的百分位值。 - 返回值说明
返回DOUBLE或ARRAY类型。如果设置多个分位数则返回ARRAY类型,只设置一个时,返回DOUBLE类型。
计算过程:
- 先对指定列升序排列,并从1开始依次编号,比如有一列数据为[40,50,20,10,30],先升序排列为[10,20,30,40,50],再依次编号为[1,2,3,4,5]
- 计算该列p百分位点,比如p为0.7,则5*0.7=3.5
- 计算第p位百分数对应的值,3.5表示值位于编号3和4之间,结果为30+(40-30)×0.5=35。
|