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

相关推荐
JarvanMo5 小时前
HTTP的DELET方法能不能有Body?
前端
天蓝色的鱼鱼5 小时前
扔掉 ESLint + Prettier:Biome 全家桶实战
前端
533_5 小时前
[element-plus] el-tabs和el-menu联动
前端·javascript·vue.js
小呀小叮当~5 小时前
Telegram 有哪些实用功能?一文了解
前端·人工智能·后端·其它
索西引擎6 小时前
【React】React Fiber 架构:设计动机、核心机制与调度策略分析
前端·react.js·架构
雨季mo浅忆6 小时前
上传文件夹
前端·vue3
谙忆10246 小时前
响应式图片实战:srcset、sizes、picture 与 art direction 到底怎么用
前端
索西引擎8 小时前
【React】JSX:JavaScript 语法扩展的本质、编译机制与表达能力分析
前端·javascript·react.js
国科安芯16 小时前
航天电子模拟前端三大支柱:精密运放、高速运放与电压监控的协同设计方法——ASL8522S/ASL622S/ASL706S技术解析
前端·单片机·嵌入式硬件·fpga开发·架构·安全性测试
牧濑红莉16 小时前
网络安全竞赛pwn全解及第一道ai的wp
javascript·.net