HiveSQL的百分位数计算函数(用于精确和近似计算)
发布时间
阅读量:
阅读量
在Hive中,有两个百分位数函数:percentile(col, p)和percentile_approx(col, p),它们的使用方法是将数值列col输入,并指定比例参数p∈(0,1)。
其中percentile要求输入字段必须为整数类型,则接受相近的数据类型
此外该函数还支持一个参数B:percentile_approx(col, p, B)。该参数用于调节内存消耗的程度其中较大的B值会带来更高的计算精度但会占用更多的内存资源。当该字段中不同取值的数量少于指定阈值B时计算结果将精确地反映出相应的百分位数值
如果要求多个分位数,可以把p换为array(p1,p2,p3…p1,p2,p3…),即
percentile_approx(col,array(0.05,0.5,0.95),9999)
如果不放心的话,就给col再加个转换:
该算法通过调用该quantile_approx函数来计算指定列的分位数分布,并采用多个百分位点进行分析以提高准确性。
其中使用了一个包含三个百分位点的大样本数组,并基于1万次采样进行稳定计算。
其输出结果长这样:
[0.0,4001.0,4061.0]
没法直接用啊!再加个转换:
将数值通过percentile_approx函数(将给定列转换为double类型后计算指定数组中百分位数的近似值)拆分为数组(第5百分位数、中位数、第95
全部评论 (0)
还没有任何评论哟~
