hive里面有个percentile函数和percentile_approx函数,其使用方式为percentile(col, p)、percentile_approx(col, p),p∈(0,1)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…p1,p2,p3…),即

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)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 percentileexplode(percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999))as percentile

输出结果就长这样了:

percentile
0
4001
4061

实际操作中,发现有时在计算分位数的时候mapper会卡在0%。 
前面说过,如果distinct的值小于B,就会返回精确值,那么个人猜测是因为后台执行的过程是先做了一个select distinct limit B,然后排序得到分位数。如果distinct值特别多的情况下,仅仅是去重就是一个巨大的运算负担,更别说排序了。而当把B从10000调到100的时候很快就能跑出来了。

中位数函数: percentile
语法: percentile(BIGINT col, p) 
返回值: double
说明: 求准确的第pth个百分位数,p必须介于0和1之间,但是col字段目前只支持整数,不支持浮点数类型

中位数函数: percentile
语法: percentile(BIGINT col, array(p1 [, p2]…)) 
返回值: array<double>
说明: 功能和上述类似,之后后面可以输入多个百分位数,返回类型也为array<double>,其中为对应的百分位数。

近似中位数函数: percentile_approx
语法: percentile_approx(DOUBLE col, p [, B]) 
返回值: double
说明: 求近似的第pth个百分位数,p必须介于0和1之间,返回类型为double,但是col字段支持浮点类型。参数B控制内存消耗的近似精度,B越大,结果的准确度越高。默认为10,000。当col字段中的distinct值的个数小于B时,结果为准确的百分位数

近似中位数函数: percentile_approx
语法: percentile_approx(DOUBLE col, array(p1 [, p2]…) [, B]) 
返回值: array<double>
说明: 功能和上述类似,之后后面可以输入多个百分位数,返回类型也为array<double>,其中为对应的百分位数。

直方图: histogram_numeric
语法: histogram_numeric(col, b) 
返回值: array<struct {‘x’,'y’}>
说明: 以b为基准计算col的直方图信息。
举例:
hive> select histogram_numeric(100,5) from dual;
[{"x":100.0,"y":1.0}]

示例:中位数、平均数计算方法:

selectavg(t1.price) as avg_price,percentile(int(price), 0.5) as mid_pricefromdev.devXXXXXgroup bycate_id,cate_name;

HiveSQL percentile和percentile_approx 函数计算千分数相关推荐

  1. hive percentile和percentile_approx 计算千分数

    1.hive 计算千分位数: percentile函数和percentile_approx函数: 其使用方式为percentile(col, p).percentile_approx(col, p,B ...

  2. 计算机函数if80到90分怎么弄,用EXCEL工作表怎样利用IF函数计算分数等级

    用EXCEL工作表怎样利用IF函数计算分数等级 01 打开保存有分数的表格,如图所示.这里假设分数设为 A:90分以上(含90) B:80~89 C:70~79 D:60~69 E:60以下(不含60 ...

  3. 6-1 编写函数计算一个或不特定多个数的乘积(高教社,《Python编程基础及应用》习题8-6)分数 5

    编写函数计算一个或不特定多个数的乘积(高教社,<Python编程基础及应用>习题8-6) 函数接口定义: defcaculate(*t) 打*号的参数t接受多个参数成员,参数成员预期为整数 ...

  4. Python 计算总分数和平均分 - Python零基础入门教程

    目录 一.Python 计算总分数和平均分源码 二.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python 计算总分数和平 ...

  5. percent sql_使用SQL Server中的PERCENT_RANK函数计算SQL百分位数

    percent sql This article explores the SQL Server PERCENT_RANK analytical function to calculate SQL P ...

  6. 节省 58% IT 成本,调用函数计算超过 30 亿次,石墨文档的 Serverless 实践

    作者:金中茜 对石墨文档来说,"用户体验.成本消耗.上线速度"是决定能否在茫茫商海展露头角的重要因素.它需要一套弹性高可用.分布式的服务来实时处理文档编辑冲突:既要保证成本可接受, ...

  7. 异步请求积压可视化|如何 1 分钟内快速定位函数计算积压问题

    作者 | 千风 本文分为三个部分:概述中引入了积压问题,并介绍了函数计算异步调用基本链路:并在指标介绍部分详细介绍了指标查看方式,分类解读了不同的指标含义:最后以一个常见的异步请求积压场景为例,介绍如 ...

  8. 费用节省 50%,函数计算 FC 助力分众传媒降本增效

    作者:洛浩 分众传媒诞生于 2003 年,创建了电梯媒体广告模式,2005 年成为首家在美国纳斯达克上市的中国广告传媒股,2015 年分众传媒回归 A 股,市值破千亿.分众传媒营收超百亿关键在于,抓住 ...

  9. 函数计算 GB 镜像秒级启动:下一代软硬件架构协同优化

    作者:修踪 审核&校对:Chang Shuai.望宸 编辑&排版:雯燕 背景 函数计算在 2020 年 8 月创新地提供了容器镜像的函数部署方式.AWS Lambda 在 2020 年 ...

最新文章

  1. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
  2. hdu3793 判断对称(水题)
  3. java query接口_「软帝学院」Java零基础学习详解
  4. python2.7 安装pycrypto库报错
  5. mathtype中批量修改公式的字号和大小
  6. python中bool函数_bool()函数以及Python中的示例
  7. 最大值减最小值等于区间长度_呆哥数学每日一题 ——三角函数求余弦最小值...
  8. STM32的学习记录--1.准备工作
  9. 书店看不要钱的JS笔记
  10. antd option宽度自适应_前端基础:自适应布局之rem布局基础
  11. [精简版]CNN巻积层输出size计算公式
  12. 对称加密算法和非对称加密算法的完美结合
  13. Create.js实战-MovieClip操作
  14. 关于java模拟邮箱发送邮件的设计与实现
  15. 文件系统错误故障排除
  16. 【Linux】Linux 常用基操和 Java 环境的部署
  17. python爬取微博评论点赞数_python爬取点赞评论数
  18. MFC CListCtrl修改表头字体、字体颜色、背景颜色、字体垂直居中、表头高度
  19. 溢出overflow和空间定位z-index
  20. SQL查询结果按照指定内容排序

热门文章

  1. Mac Mounty正常卸载方法(mount failed异常解决)
  2. 腾讯云永久修改主机名
  3. 【BJOI 2019】排兵布阵
  4. Spring到底是什么
  5. 关于C++里const的pitfall
  6. Typecho情侣博客Brave主题源码
  7. ubuntu系统录屏recordmydesktop与ogv视频转换MP4
  8. IFD-x 微型红外成像仪(模块)的温度测量和成像精度
  9. GPT-3 离通用人工智能有多近?
  10. 小学语文经典好词好句好段