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

相关推荐
404NotFound30519 分钟前
基于 Vue 3 和 Guacamole 搭建远程桌面(利用RDP去实现,去除vnc繁琐配置)
前端
咚咚咚ddd22 分钟前
AI 应用开发:Agent @在线文档功能 - 前端交互与设计
前端·aigc·agent
旧梦吟23 分钟前
脚本工具 批量md转html
前端·python·html5
ohyeah24 分钟前
React 中兄弟组件通信的最佳实践:以 Todo 应用为例
前端
WebRuntime33 分钟前
问世间,exe是何物?直教AI沉默、Web寡言(1)
javascript·c#·.net·web
岁月宁静36 分钟前
一个 AI 聊天功能,背后至少 8 个你没想到的工程细节
前端·vue.js·aigc
一字白首43 分钟前
Vue3 入门,从项目创建到组合式 API 全解析(含 provide/inject)
前端·javascript·vue.js
无限大643 分钟前
为什么键盘有"机械"和"薄膜"之分?——按键的触感革命
前端
不会飞的鲨鱼44 分钟前
抖音验证码滑动轨迹原理(续)
javascript·爬虫·python