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

相关推荐
一个不爱写代码的瘦子16 小时前
迭代器和生成器
前端·javascript
拳打南山敬老院16 小时前
漫谈 MCP 构建之概念篇
前端·后端·aigc
前端老鹰16 小时前
HTML <output> 标签:原生表单结果展示容器,自动关联输入值
前端·html
OpenTiny社区16 小时前
OpenTiny NEXT 内核新生:生成式UI × MCP,重塑前端交互新范式!
前端·开源·agent
耶耶耶11117 小时前
web服务代理用它,还不够吗?
前端
Liamhuo17 小时前
2.1.7 network-浏览器-前端浏览器数据存储
前端·浏览器
洋葱头_17 小时前
vue3项目不支持低版本的android,如何做兼容
前端·vue.js
前端小书生17 小时前
React 组件渲染
前端·react.js
sjd_积跬步至千里17 小时前
CSS实现文字横向无限滚动效果
前端
维他AD钙17 小时前
前端基础避坑:3 个实用知识点的简单用法
前端