hive 计算分位数

hive里面却是有个percentile函数和percentile_approx函数,其使用方式为percentile(col, p)、percentile_approx(col, p),p∈(0,1) 
其中percentile要求输入的字段必须是int类型的,而percentile_approx则是数值相似型的均可以 
其实percentile_approx还有一个参数B:percentile_approx(col, p,B),参数B控制内存消耗的近似精度,B越大,结果的准确度越高。默认为10,000。当col字段中的distinct值的个数小于B时,结果为准确的百分位数。 
若是我要求多个分位数怎么办呢?,能够把p换为array(p1,p2,p3…),即app

percentile_approx(col,array(0.05,0.5,0.95),9999)函数


若是不放心的话,就给col再加个转换: 内存

percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999)ast


其输出结果长这样:di

[0.0,4001.0,4061.0]co


无法直接用,再加个转换:cas

explode(percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999))as percentile参数

相关文章
相关标签/搜索