首页 > 其他分享 >Hive 如何巧用分布函数percent_rank()剔除极值求均值

Hive 如何巧用分布函数percent_rank()剔除极值求均值

时间:2023-04-03 22:57:14浏览次数:56  
标签:shop 函数 percent rank 最小值 Hive id

场景描述

前期写过一篇关于剔除订单极值求订单均值的案例,之前使用的是 dense_rank 函数对订单金额进行排序后,过滤掉最大值最小值后进行处理,最近工作刚好使用到分布函数percent_rank,想起来应该也可以用到这个场景;

percent_rank() 简介

percent_rank() 函数为分布函数,用于返回某个排序数值在数据集中的百分比排位,其值分布在0-1之间【0,1】,此函数用于计算数值在数据集内的相对位置。

计算公式:当前行rn -1 / 组内行数 -1 其中减去1表示排位时候不包括当前订单本身,表示他前面有多少订单比它值低或高,在实际中有一定分析意义。

解题方法

题目中要求是去除最大值、最小值后的平均值,因此本题难点问题是如何去除,最大、最小值。经过上面分析,percent_rank() 函数为按照某个排序后值进行排名后当前行的占比,其值在[0,1]区间内,按照其特性,我们知道排序后,0和1 的值代表最小和最大值,因此我们根据该函数很容易获取最大最小值的标记,从而解决了row_number() 或dense_rank()函数使用一次排序不能彻底区分最大,最小值的问题,简化了问题的求解方式

  dense_rank() over (partition by shop_id order by sale) rn,
  dense_rank() over (partition by shop_id order by sale desc) rn_

如果使用 percent_rank()  可以利用分布特性,使用一次即可过滤掉分组内的最大值和最小值

参考实现

select shop_id, cast(avg(sale) as decimal(18, 0)) as avg_salary
from (select shop_id, sale, percent_rank() over (partition by shop_id order by sale) as rate
      from temp_shop_info) t
where rate != 0
  and rate != 1
group by shop_id;

标签:shop,函数,percent,rank,最小值,Hive,id
From: https://www.cnblogs.com/wdh01/p/17196693.html

相关文章

  • RANKX和TOPN
     RANKX是排序函数:RANKX(TABLE,MEASURE,,ASC/DESC,DENSE/SKIP)第一个参数必填,TABLE,可以是表或者列,可以理解成排序的依据,通常会配合ALL/ALLSELECTED函数使用,比如ALL('TABLE')或者ALL('TABLE'[COLUMNA],'TABLE'[COLUMNB])第二个参数必填,算法,通常是一个聚合函数,这里建议先创......
  • hive 优化
    hive优化`--合并小文件sethive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;--sethive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;setmapreduce.input.fileinputformat.split.minsize=256000000;setmapreduce.input.filein......
  • Hive 和 Spark 分区策略剖析
    作者:vivo互联网搜索团队-DengJie随着技术的不断的发展,大数据领域对于海量数据的存储和处理的技术框架越来越多。在离线数据处理生态系统最具代表性的分布式处理引擎当属Hive和Spark,它们在分区策略方面有着一些相似之处,但也存在一些不同之处。一、概述随着技术的不断的发展,大数据......
  • Hive 和 Spark 分区策略剖析
    作者:vivo互联网搜索团队-DengJie随着技术的不断的发展,大数据领域对于海量数据的存储和处理的技术框架越来越多。在离线数据处理生态系统最具代表性的分布式处理引擎当属Hive和Spark,它们在分区策略方面有着一些相似之处,但也存在一些不同之处。一、概述随着技术的不断的发展......
  • hivesql练习_会话划分问题
    现有页面浏览记录表(page_view_events)如下,表中有每个用户的每次页面访问记录。user_idpage_idview_timestamp100home1659950435100good_search1659950446100good_list1659950457100home1659950541100good_detail1659950552100cart16599505631......
  • hivesql练习_间断连续登录用户问题
    现有各用户的登录记录表(login_events)如下,表中每行数据表达的信息是一个用户何时登录了平台。user_idlogin_datetime1002021-12-0119:00:001002021-12-0119:30:001002021-12-0221:01:00现要求统计各用户最长的连续登录天数,间断一天也算作连续,例如:一个用户在......
  • 函数RANK,DENSE_RANK和ROW_NUMBER之间的区别
    MYSQL8已经支持了排名函数RANK,DENSE_RANK和ROW_NUMBER。但是在就得版本中还不支持这些函数。RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连......
  • ansible 常用模块 archive
    模块说明该unarchive模块解压缩存档。它不会解压缩不包含存档的压缩文件。默认情况下,它会在解包之前将源文件从本地系统复制到目标。设置remote_src=yes为解压缩目标上已存在的存档。在目标主机上需要zipinfo和gtar/unzip命令。需要目标主机上的zstd命令来展开.tar......
  • azure databricks使用external hive metastore跨工作区共享元数据
    为什么要使用externalhivemetastore可以跨workspace的共享元数据,不用每次创建workspace的时候都重复的把元数据重建一次。更好的元数据集中管理,Createonce,useeverywhere。为灾难恢复(DR)做好为准备,并降低复杂性。(PAAS一样会存在意外的,不要以为不会,所以DR是必须的)可以更好控......
  • youtube点击位置纠偏论文:《Recommending What Video to Watch Next: A Multitask Rank
    背景在推荐系统存在两个难题:1.需要同时优化点击、观看时长、点赞、打分、评论等多个目标,如何同时建模多个目标2.存在positionbias,即同个视频放在不通位置上点击率等会不同,如何建模positionbiasyoutube这篇论文采用了MMOE来建模多目标,并用一个shallowtower来建模position......