摸鱼大数据——Hive函数14

14、开窗(开列)函数

官网链接:Window Functions - Apache AsterixDB - Apache Software Foundation

14.1 基础使用
开窗函数格式: 开窗函数 over(partition by 分组字段名 [order by 排序字段名 asc|desc] [rows between 开窗开始 and 开窗结束])
​
partition by: 按照谁进行分组
order by: 对分组后的数据进行排序
rows between and: 限定窗口统计数据范围
​
开窗函数分类:第一类: 编号相关。row_number(): 123456。不管数据有没有重复,单调递增往后进行编号rank(): 123446。如果遇到相同数据,那么会重复编号,并且会占用后续的编号dense_rank(): 123445。如果遇到相同数据,那么会重复编号,但是不会占用后续的编号第二类: 聚合函数。count()、sum()、avg()、max()、min()....第三类: 取值函数。ntile()、lag()、lead()、first_value()、last_value()

示例:

use day09;
​
-- 创建表
create table pv_tb(cookieid string,datestr string,pv int
)row format delimited fields terminated by ',';
​
-- 导入数据
load data inpath '/dir/website_pv_info.txt' into table pv_tb;
​
-- 验证数据
select * from pv_tb;
​
-- 编号相关的窗口函数
selectcookieid,datestr,pv,-- row_number:用的最多。单调递增的进行编号,不管重复数据row_number() over(partition by cookieid order by pv asc) as rs1,-- rank:单调递增的进行编号,如果遇到重复数据,编号是相同,同时会占用后面的编号资格rank() over(partition by cookieid order by pv asc) as rs2,-- dense_rank:单调递增的进行编号,如果遇到重复数据,编号是相同,同时不会占用后面的编号资格dense_rank() over(partition by cookieid order by pv asc) as rs3
from pv_tb;
​
​
selectcookieid,datestr,pv,row_number() over(partition by cookieid order by pv asc) as rn,-- 如果有order by那么窗口的大小是慢慢逐渐放大的sum(pv) over(partition by cookieid order by pv asc) as sum_result,-- 如果没有order by那么窗口的大小直接彻底放大到最大sum(pv) over(partition by cookieid) as sum_result2
from pv_tb;

窗口的运行原理:

针对sum(pv) over(partition by cookieid order by pv asc) as sum_result语句

14.2 控制数据范围
开窗函数控制范围: rows between 范围开始 and 范围结束
​
具体的语法含义:1- 范围开始unbounded preceding: 从窗口开始数字 preceding: 前几行数据2- 范围结束unbounded following: 到窗口结束数字 following: 后几行数据3- 特殊的,既能够作为范围开始,也能够作为范围结束current row: 当前行

示例:

-- 控制窗口统计的数据范围
selectcookieid,datestr,pv,sum(pv) over(partition by cookieid order by pv rows between unbounded preceding and current row) as rs1,sum(pv) over(partition by cookieid order by pv rows between 2 preceding and current row) as rs2,sum(pv) over(partition by cookieid order by pv rows between unbounded preceding and unbounded following) as rs3,sum(pv) over(partition by cookieid order by pv rows between 2 preceding and unbounded following) as rs4,sum(pv) over(partition by cookieid order by pv rows between 2 preceding and 2 following) as rs5,sum(pv) over(partition by cookieid order by pv rows between current row and unbounded following) as rs6
from pv_tb;

14.3 其他开窗函数
ntile(n): 将窗口内的数据分配到n个桶里面去,返回的结果是桶的编号。可以使用在数据抽样中
​
lag: 取窗口中上一行的数据
lead: 取窗口中下一行的数据
​
first_value: 取窗口中第一行的数据
last_value : 取窗口中最后一行的数据

示例:

-- 其他函数
selectcookieid,datestr,pv,row_number() over(partition by cookieid order by pv asc) as rn,-- ntile(n):将窗口内的数据分配到n个桶里面去,返回的结果是桶的编号ntile(3) over(partition by cookieid order by pv asc) as rs1,-- 取窗口中上一行的数据lag(pv) over(partition by cookieid order by pv asc) as rs2,-- 取窗口中下一行的数据lead(pv) over(partition by cookieid order by pv asc) as rs3,-- 取窗口中第一行的数据first_value(pv) over(partition by cookieid order by pv asc) as rs4,-- 取窗口中最后一行的数据last_value(pv) over(partition by cookieid order by pv asc) as rs5
from pv_tb;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【问题随记】System policy prevents Wi-Fi scans,解决连接 WIFI 需要权限的问题

问题随记 System policy prevents Wi-Fi scans,每次打开我的开发板连接 wifi 都会出现下面的弹窗,这也阻挡了我的WIFI自动连接,然后就需要连上屏幕,输入 wifi 密码,这样才能进行 VNC、SSH 等一系列的连接。 问题解决 …

【运维项目经历|026】Redis智能集群构建与性能优化工程

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

【SVG 生成系列论文(九)】如何通过文本生成 svg logo?IconShop 模型推理代码详解

SVG 生成系列论文(一) 和 SVG 生成系列论文(二) 分别介绍了 StarVector 的大致背景和详细的模型细节。SVG 生成系列论文(三)和 SVG 生成系列论文(四)则分别介绍实验、数据集和数据增…

2024码蹄杯初赛 拔河(非二分解法)

AK选手前来补充一发邪典(水数据)写法 题面: 简单来说就是给你一个序列,让你选择一段连续区间,使得这个区间平均值最大,同时区间长度大于等于F。 很显然对于区间求和直接用前缀和优化到O(1),但是…

SRS压测--SRS-Bench

SRS压测--SRS-Bench 简介编译和使用:问题1:问题2:问题3: Player for Live(**直播播放压测**)Publisher for Live or RTC(**直播或会议场景推流压测**)4.Multipel Player or Publisher for RTC(会议场景的播放压测)5.DVR 录制场景:6.RTC Plaintext(压测RT…

git checkout file 撤销对该文件的所有修改

git checkout file 撤销对该文件的所有修改 有时忘记修改了哪些文件,如下命令找到修改的文件 git status -s M linux-4.19.y/fs/jffs2/acl.cM linux-4.19.y/fs/jffs2/acl.hM linux-4.19.y/fs/jffs2/background.cM linux-4.19.y/fs/jffs2/build.cM linux-4.19.y/fs/jffs2/compr.…

jar包部署到服务器,修改jar包配置文件

jar包部署到服务器 打包项目1.jar包分离2.整体打包配置文件配置文件分离整体打包修改配置文件 打包项目 maven项目打包有两种&#xff0c;一是将自己的项目和依赖包分离&#xff0c;二是打包成一个jar包 1.jar包分离 需要在pom文件中引入依赖 <build><finalName&…

CS算法(一)—— 算法原理1

SAR成像专栏目录 CS —— chirp scaling,调频变标。 CS算法基于Papoulis提出的Scaling原理,通过对距离向LFM回波信号进行频率调制,实现了信号的尺度变换(变标)或平移。基于这种原理,可以通过相位相乘替代时域插值来完成随距离变化的RCMC。此外,由于是在二维频域进行数据处…

Docker基础篇之将本地镜像发布到私有库

文章目录 1. Docker Registry简介2. 将本地镜像推送到私有库 1. Docker Registry简介 Docker Registry是官方提供的工具&#xff0c;可以用于构建私有镜像仓库。 2. 将本地镜像推送到私有库 下载Docker Registry docker pull registry现在我们可以从镜像中看到下载的Regist…

【加密与解密】【01】网络安全体系

网络通信OSI模型 物理层&#xff08;Physical&#xff09;链路层&#xff08;DataLink&#xff09;网络层&#xff08;Network&#xff09;传输层&#xff08;Transport&#xff09;会话层&#xff08;Session&#xff09;表示层&#xff08;Presentation&#xff09;应用层&a…

stm32 h5 串口采用DMA循环BUFF接收数据

当使用STM32H5系列的MCU进行串口&#xff08;USART&#xff09;通信&#xff0c;并希望使用DMA&#xff08;Direct Memory Access&#xff09;进行循环缓冲区&#xff08;Circular Buffer&#xff09;接收数据时&#xff0c;你需要进行以下配置步骤&#xff1a; 初始化串口&…

【轻松搞定形象照】助你打造编程等级考试、竞赛专属二寸靓照,报名无忧,展现最佳风采!

更多资源请关注纽扣编程微信公众号 ​ 在数字化时代&#xff0c;拍照似乎变得轻而易举&#xff0c;但当我们需要一张特定规格的一寸照片时&#xff0c;事情就变得复杂起来。随着编程等级考试和各类信息学竞赛的日益临近&#xff0c;不少考生都为了一张符合要求的一寸照片而忙…

抽屉式备忘录(共25041字)

Sing Me to Sleep <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>与妖为邻的备忘录</title&g…

pytorch学习day4

一、卷积层&#xff08;Convolution Layers&#xff09; 卷积层是卷积神经网络&#xff08;CNN&#xff09;中的核心组件&#xff0c;用于提取输入数据的特征。它们通过应用卷积运算来捕捉局部的空间特征&#xff0c;非常适合处理图像和视频等具有空间结构的数据。 1. 卷积层的…

mysql索引失效的原因

MySQL索引失效的原因有很多,以下是一些常见的情况: 查询条件中使用了函数或表达式:如果在查询条件中使用了函数(如 DATE()、UPPER() 等)或表达式,MySQL 无法利用索引。例如,WHERE UPPER(name) = JOHN。 类型不匹配:查询条件的字段类型和索引字段的类型不匹配。例如,字…

创建模拟器

修改模拟器默认路径 由于模拟器文件比较大&#xff0c;默认路径在C:\Users\用户名.android\avd&#xff0c;可修改默认路径 创建修改后的路径文件 D:\A-software\Android\AVD添加系统变量ANDROID_SDK_HOME&#xff1a;D:\A-software\Android\AVD重启Android Studio 创建模拟…

【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索

文章目录 引言机器学习与大模型的基本概念机器学习概述监督学习无监督学习强化学习 大模型概述GPT-3BERTResNetTransformer 机器学习与大模型的融合应用自然语言处理文本生成文本分类机器翻译 图像识别自动驾驶医学影像分析 语音识别智能助手语音转文字 大模型性能优化的新探索…

【android 9】【input】【7.发送按键事件1——InputReader线程】

系列文章目录 本人系列文章-CSDN博客 目录 系列文章目录 1.简介 1.1发送流程介绍 1.2 时序图 2.普通按键消息发送部分源码分析 2.1 设备的监听 2.2 inputreader线程阻塞等待事件发生 2.3 按键事件的产生 2.4 EventHub::getEvents 2.5 InputReader::loopOnce 2.6 process…

用增之Google

目录 简介 Google开发文档 开发提炼(纯google能力) 简介

丢失的数字 ---- 位运算

题目链接 题目: 分析: 解法一: 哈希表解法二: 高斯求和解法三:位运算 异或运算根据运算的性质, 相同的两个a异或 0 以示例一为例: 数组中有0,1,3, 缺失的数字是2, 那么只要我们将数组与0,1,2,3 异或, 就会得到2 代码: class Solution {public int missingNumber(int[] num…