当前位置: 首页 > article >正文

Hive:窗口函数[ntile, first_value,row_number() ,rank(),dens_rank()]和自定义函数

ntile 分组

它把有序的数据集合 平均分配 指定的数量(num )个桶中 , 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。
被称作窗口函数、序列函数或分析函数, 本质上是一种窗口函数,但由于其生成序列化编号的特性,也被称为序列函数;同时,由于窗口函数在某些数据库系统中被称为分析函数, NTILE 也常被归类为分析函数
使用场景: 常用于将数据分段,以便进行分组分析或计算分位数。

示例

 

first_value和last_value

窗口函数,常与 OVER 子句结合使用,以定义窗口的范围和排序规则 

示例

注意: 使用last_value需要指定窗口的范围,使用rows或rang,

如果没有指定的话,窗口函数的行为取决于数据库的具体实现.在某些数据库系统中,如果未明确指定窗口范围,LAST_VALUE 函数可能会返回整个结果集的最后一个值。但是,在Hive中,如果不指定窗口范围,LAST_VALUE 函数默认会将整个分区(在没有 PARTITION BY 子句的情况下,整个结果集就是一个分区)视为窗口,并为每一行返回整个窗口内的最后一个值。

 

FIRST_VALUELAST_VALUE 的行为可能因版本和实现而异。为了确保跨数据库系统的兼容性和可预测性,建议在使用这些函数时总是明确指定窗口范围(rows或rang)。这样可以避免因默认行为而导致的意外结果。

lag 和 lead

窗口函数

使用场景: 处理时间序列数据或需要比较当前记录与相邻记录

语法: 

 

3个排名函数

属于窗口函数, 格式: 排序函数 over( order by 字段 排序方式) 

row_number : 不存在并列名次

rank()  :并列名次情况,顺序跳跃递增

dense_rank() : 有并列名次情况,顺序递增

示例排序效果

row_number

rank()

dens_rank()

自定义函数

示例

 

 


http://www.kler.cn/a/526235.html

相关文章:

  • 【letta】The Letta Platform LETTA平台
  • ResNet 残差网络
  • 工作总结:压测篇
  • Python练习(2)
  • dify实现原理分析-rag-检索(Retrieval)服务的实现
  • Java中的泛型
  • linux的/proc 和 /sys目录差异
  • [NVME] PMRCAP-Persistent Memory Region Capabilities
  • 10.4 字符编码和解码
  • 一文大白话讲清楚webpack进阶——8——Module Federation
  • 学习:ASCII码是计算机中用得最广泛的字符集及其编码
  • 算法总结-哈希表
  • Ansys Maxwell:采用对称性的双转子轴向磁通电机
  • 【AI论文】BIOMEDICA:一个源自科学文献的开放生物医学图像-标注档案、数据集及视觉-语言模型
  • 从零开始学习安时积分法(STM32实现程序)
  • Databricks:统一的数据和 AI 平台
  • docker安装nacos2.2.4详解(含:nacos容器启动参数、环境变量、常见问题整理)
  • [C]基础9.深入理解指针(1)
  • 接口使用实例(1)
  • SAP SD学习笔记27 - 贩卖契约(框架协议)3 - 基本契约 - 定期请求(开票计划)
  • pandas基础学习:常用基本函数
  • hdfs:介绍三个脚本
  • jQuery小游戏(一)
  • 向上调整算法(详解)c++
  • 基于STM32的智能停车场管理系统设计
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.28 存储之道:跨平台数据持久化方案