hive 计算千分位数:
percentile函数和percentile_approx函数:
其使用方式为percentile(col, p)、percentile_approx(col, p,B), .返回col列p分位上的值。B用来控制内存消耗的精度。实际col中distinct的值<B返回的时精确的值。
其中percentile要求输入的字段必须是int类型的,而percentile_approx则是数值类似型的都可以 .
例如percentile_approx(grade, 0.95) 取得排位在倒数第5%的成绩。(使用时会对成绩进行排序,一般可以用于求中位数)
要求多个分位数时,可以把p换为array(),即
percentile_approx(col,array(0.05,0.5,0.95),9999) 或者
percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999
结果为
[0.0,4001.0,4061.0]
explode(percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999))as percentile 结果转换为列