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

Hive窗口函数回顾

1.语法

在这里插入图片描述

1.1 基于行的窗口函数

Hive的窗口函数分为两种类型,一种是基于行的窗口函数,即将某个字段的多行限定为一个范围,对范围内的字段值进行计算,最后将形成的字段拼接在该表上。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:在进行窗口函数计算之前,要加上order by先对数据进行排序。即

sum(amount) over(order by xxx rows between xxx and xxx)

1.2基于值的窗口函数

Hive中基于值的窗口函数,是将某个字段每行的值-1得出要限定的范围,比如某个字段第一行的值为2,那么它的限定范围就是[1,2],第二行的值为6,那么它的限定范围就是[5,6],最后将结果拼接在源表上。
在这里插入图片描述

2.窗口分区

窗口分区就是在定义窗口范围的时候,就指定分区字段,每个分区单独划分窗口。
在这里插入图片描述
上述代码,按照userid分为了两个区,每个分区内单独开窗实现累加

3.窗口缺省

在这里插入图片描述

4.常用的窗口函数

4.1 聚合函数

在这里插入图片描述

4.2 跨行取值函数

4.2.1 lead和lag函数

Lead是用于获取当前行的上边某行或者某个字段的值
Lag是用于获取当前行的下边某行或者某个字段的值
在这里插入图片描述
Lead和Lag函数式不支持自定义窗口的
在这里插入图片描述

4.2.2 First_value和Last_value

获取窗口内**(基于当前行的)**某一列第一个值或者最后一个值
在这里插入图片描述
其中false代表不跳过空值,而true则代表跳过空值。
在这里插入图片描述

4.3 排名函数

rank,dense_rank,row_number
排名函数也不支持自定义窗口
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/187152.html

相关文章:

  • flink自定义窗口分配器
  • iOS CGRect CGPoint NSRange等结构体的NSLog打印输出
  • Viper FTP Mac/ftp管理工具
  • web漏洞-xml外部实体注入(XXE)
  • Impeller-Flutter的新渲染引擎
  • python 面试算法题
  • Python中的yield关键字
  • 怎么压缩pdf文件?分享缩小pdf文件的简单方法
  • 51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)
  • Vuex的介绍
  • mysql基础语法速成版
  • Docker镜像 配置ssh
  • 12.2 实现键盘模拟按键
  • 《DevOps 精要:业务视角》- 读书笔记(七)
  • 【随想】每日两题Day.12(实则一题)
  • 基于复旦微JFM7K325T FPGA的高性能PCIe总线数据预处理载板(100%国产化)
  • 什么是原型链(prototype chain)?如何实现继承?
  • RabbitMQ 5种工作模式介绍和Springboot具体实现
  • C++ - 可变模版参数 - emplace相关接口函数 - 移动构造函数 和 移动赋值运算符重载 的 默认成员函数
  • 总结三:计算机网络面经
  • 服务器数据恢复-VMWARE ESX SERVER虚拟机数据恢复案例
  • COCI 2021-2022 #1 - Set 题解
  • 分享40个极具商业价值的chatGPT提问prompt
  • 一文搞懂到底什么是元宇宙
  • 【重拾C语言】六、批量数据组织(四)线性表—栈和队列
  • 力扣刷题-哈希表-一个字符串是否能够由另一个字符串中的字符组成
  • Android使用AOP切面编程
  • Flutter学习笔记
  • 软件生命周期中的概念设计和详细设计的主要任务是什么
  • 大数据学习(2)Hadoop-分布式资源计算hive(1)