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

相关推荐
踢球的打工仔几秒前
typescript-基本类型
前端·javascript·typescript
dly_blog3 分钟前
Vue 组件通信方式大全(第7节)
前端·javascript·vue.js
枫叶丹412 分钟前
ModelEngine应用编排创新实践:通过可视化编排构建大模型应用工作流
开发语言·前端·人工智能·modelengine
郭小铭14 分钟前
将 Markdown 文件导入为 React 组件 - 写作文档,即时获取交互式演示
前端·react.js·markdown
JAVA+C语言15 分钟前
CSS 继承:核心概念 + 实用解析
前端·css
橙某人17 分钟前
LogicFlow 交互新体验:告别直连,丝滑贝塞尔轨迹实战!🍫
前端·javascript·vue.js
林太白19 分钟前
docker安装以及部署node项目
前端·后端·docker
OpenTiny社区32 分钟前
【博文精读】Chrome CSS 2025年回顾
前端·css
m0_6726565440 分钟前
JavaScript性能优化实战技术文章大纲
开发语言·javascript·性能优化
菩提小狗1 小时前
第3天:基础入门-抓包&封包&协议&APP&小程序&PC应用&WEB应用|小迪安全笔记|网络安全|
前端·安全·小程序