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

相关推荐
梵得儿SHI几秒前
Vue 核心语法深度解析:生命周期与响应式之计算属性(computed)与侦听器(watch/watchEffect)
前端·javascript·vue.js·计算属性·侦听器·缓存机制·数据派生
anuoua2 分钟前
歼20居然是个框架-基于 Signals 信号的前端框架设计
前端·javascript·前端框架
秋天的一阵风2 分钟前
翻掘金看到停更的前辈们,突然想聊两句 🤔
前端·vue.js·程序员
中杯可乐多加冰3 分钟前
openEuler软件生态体验:快速部署Nginx Web服务器
服务器·前端·nginx
拾忆,想起4 分钟前
Dubbo服务降级全攻略:构建韧性微服务系统的守护盾
java·前端·网络·微服务·架构·dubbo
我爱学习_zwj11 分钟前
Node.js模块管理:CommonJS vs ESModules
开发语言·前端·javascript
咬人喵喵13 分钟前
网页开发的“三剑客”:HTML、CSS 和 JavaScript
javascript·css·html
顾安r13 分钟前
12.8 脚本网页 井字棋
前端·stm32·django·html
心本无晴.14 分钟前
深入剖析Vue3中Axios的实战应用与最佳实践
前端·javascript·vue.js
冬男zdn15 分钟前
优雅的React表单状态管理
前端·javascript·react.js