Window 窗口函数 (Spark Sql)

在 Spark SQL 中,Window 函数是一种用于在查询结果集中执行聚合、排序和分析操作的强大工具。它允许你在查询中创建一个窗口,然后对窗口内的数据进行聚合计算。

Scala 复制代码
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._

// 创建一个 WindowSpec 对象,指定窗口的分区和排序方式
val windowSpec = Window.partitionBy("category").orderBy(desc("sales"))

// 使用 Window 函数计算每个类别的销售额排名
val result = df.withColumn("rank", rank().over(windowSpec))

result.show()

然后,通过创建一个 `WindowSpec` 对象,指定了窗口的分区方式(`partitionBy("category")`)和排序方式(`orderBy(desc("sales"))`)。

接下来,使用 `rank()` 函数和 `over` 方法应用窗口规范,计算每个类别的销售额排名。`rank()` 函数是一个窗口函数,它返回每个行的排名。

最后,使用 `withColumn` 方法将计算出的排名添加为新的列,并通过 `show()` 方法展示结果。

总结

窗口函数首先先进行分组(partition by),在进行排序(order by),得到返回值。再用序号函数用over方法进行调用

相关推荐
不一样的少年_3 分钟前
明明做了很多事,为什么简历看起来还是没含金量?
前端·后端·招聘
mashang1234567896 分钟前
mac安装SnailGitLite并配置Beyond Compare
前端·macos
雪芽蓝域zzs7 分钟前
第三十四节:用户新增编辑弹窗增加 el‑tree‑select 部门选择器
前端·javascript·vue.js
程序员老赵16 分钟前
Docker 部署 go2rtc:轻松搭建摄像头多协议流媒体平台
前端·docker·直播
巴勒个啦24 分钟前
如何设计一个高可复用的前端组件库:从API设计到文档自动化
javascript
酷酷的逗逗乐26 分钟前
前端转 Agent 开发 · 第三节:LangChain 提示词模板
前端
Cache技术分享27 分钟前
516. Java 方法句柄 - 转换(进阶篇·下)
前端·后端
妙码生花28 分钟前
全网 8k star 的 BuildAdmin 正式发布 Golang 版本,这次我们在CRUD赛道杀死了比赛。
前端·后端·ai编程
写代码像蔡徐抻29 分钟前
三年了,AI为何还没有抢走程序员饭碗?
前端·后端·面试
梦曦i34 分钟前
unix-router v0.1.0 首发:uni-app x 的 vue-router 风格路由库
前端·uni-app