Window Functions(窗口函数)

文章目录


原文:Apache Spark SQL --- Window Functions

本分类按照 Spark SQL 官方目录函数顺序整理,共 9 个函数。


1、cume_dist

语法

sql 复制代码
cume_dist()

说明

计算值在窗口分区内相对于其他值的累积分布位置。

示例

sql 复制代码
> SELECT a, b, cume_dist() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 0.6666666666666666
  A1 1 0.6666666666666666
  A1 2 1.0
  A2 3 1.0

引入版本: 2.0.0

官方条目

2、dense_rank

语法

sql 复制代码
dense_rank()

说明

在分区内计算连续排名;相同值名次相同,不会跳号。

示例

sql 复制代码
> SELECT a, b, dense_rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 1
  A1 1 1
  A1 2 2
  A2 3 1

引入版本: 2.0.0

官方条目

3、lag

语法

sql 复制代码
lag(input[, offset[, default]])

说明

返回窗口中当前行之前偏移指定行数的值,越界时返回默认值。

示例

sql 复制代码
> SELECT a, b, lag(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 NULL
  A1 1 1
  A1 2 1
  A2 3 NULL

引入版本: 2.0.0

官方条目

4、lead

语法

sql 复制代码
lead(input[, offset[, default]])

说明

返回窗口中当前行之后偏移指定行数的值,越界时返回默认值。

示例

sql 复制代码
> SELECT a, b, lead(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 1
  A1 1 2
  A1 2 NULL
  A2 3 NULL

引入版本: 2.0.0

官方条目

5、nth_value

语法

sql 复制代码
nth_value(input[, offset])

说明

返回窗口帧内从起点开始第 offset 个值。

示例

sql 复制代码
> SELECT a, b, nth_value(b, 2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 1
  A1 1 1
  A1 2 1
  A2 3 NULL

引入版本: 3.1.0

官方条目

6、ntile

语法

sql 复制代码
ntile(n)

说明

将窗口分区中的行分配到最多 n 个桶中。

示例

sql 复制代码
> SELECT a, b, ntile(2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 1
  A1 1 1
  A1 2 2
  A2 3 1

引入版本: 2.0.0

官方条目

7、percent_rank

语法

sql 复制代码
percent_rank()

说明

计算分区内每个值的百分比排名。

示例

sql 复制代码
> SELECT a, b, percent_rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 0.0
  A1 1 0.0
  A1 2 1.0
  A2 3 0.0

引入版本: 2.0.0

官方条目

8、rank

语法

sql 复制代码
rank()

说明

计算分区内的排名;同分同名次,后续排名可能跳号。

示例

sql 复制代码
> SELECT a, b, rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 1
  A1 1 1
  A1 2 3
  A2 3 1

引入版本: 2.0.0

官方条目

9、row_number

语法

sql 复制代码
row_number()

说明

按照分区内排序为每一行分配从 1 开始的唯一序号。

示例

sql 复制代码
> SELECT a, b, row_number() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
  A1 1 1
  A1 1 2
  A1 2 3
  A2 3 1

引入版本: 2.0.0

官方条目

相关推荐
喵个咪13 小时前
GoWind Admin 拆解:BI 大屏设计器——schema 即 JSON、resolver 注入与三张快照表的口径谱系
大数据·后端·go
武子康13 小时前
H3-World 的 11.3 小时训练数据,是怎样对齐成动作监督的?
大数据·人工智能·深度学习
字节跳动数据平台14 小时前
火山引擎知识引擎VeKnow进化之路(下):让 AI 智能体更可用、更可信、更懂业务
大数据
Elastic 中国社区官方博客14 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
MyBili15 小时前
Chrome隐私安全配置:完整防护指南
大数据·chrome·谷歌浏览器·隐私安全·浏览器防护·cookie管理·上网痕迹清理
真上帝的左手15 小时前
19. 大数据-数据同步-工具
大数据·数据同步
2601_9679791215 小时前
Python-Excel 模块对比
数据处理·科学计算·python-excel·模块对比·excel操作库
数字孪生视频孪生16 小时前
在线重构,实时同步:视频动态三维重建打造 “常更常新” 的数字底座
大数据·人工智能·重构·架构·空间计算
Aloudata16 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
云上工程笔记16 小时前
SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录
大数据·开发语言·javascript·人工智能·机器学习