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方法进行调用

相关推荐
前端小蜗11 小时前
转生到 AI 时代,我不再相信一键生成代码的传说
前端·人工智能·架构
文心快码BaiduComate11 小时前
520,Comate Mission模式跨越界限,和你达成最「深」联动
前端·数据库·后端
来恩100311 小时前
Java Web三大作用域对象
java·开发语言·前端
在繁华处11 小时前
轻棋局(四):前端 SPA 实战
前端
不是山谷.:.12 小时前
前端性能优化全解析:从原理到落地,覆盖全领域与多技术栈
前端·笔记·性能优化·状态模式
sakana12 小时前
我开源了我的cgzskill,帮Claude装上长期记忆
前端
用户2235862182012 小时前
如何在超大型的工程中使用 Claude Code?
前端·ios·claude
Amos_Web12 小时前
Rspack 源码解析 (2) —— 从 rspack build 到输出 dist,完整编译链路详解
前端·javascript
漓漾li12 小时前
每日面试题(2026-05-20)- 前端
前端·react.js
颯沓如流星12 小时前
前端 UI 组件专业术语科普指南
前端·ui