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

相关推荐
李少兄3 小时前
前端开发中的多列布局(Multi-column Layout)
前端·css
new出一个对象3 小时前
uniapp手写滚动选择器
开发语言·前端·javascript
Data_agent3 小时前
京东获得京东商品详情API,python请求示例
java·前端·爬虫·python
CodeSheep3 小时前
这个知名编程软件,正式宣布停运了!
前端·后端·程序员
2401_860319523 小时前
DevUI组件库实战:从入门到企业级应用的深度探索,如何实现带搜索的Table表格
前端·前端框架
m0_471199633 小时前
【场景】用户名+密码+验证码的登录全流程
前端
恋猫de小郭3 小时前
豆包手机为什么会被其他厂商抵制?它的工作原理是什么?
android·前端·ai编程
码上成长3 小时前
长耗时接口异步改造总结
前端·git·后端
风华同学3 小时前
【系统移植篇】系统烧写
java·开发语言·前端
by__csdn3 小时前
JavaScript性能优化实战:异步与延迟加载全方位攻略
开发语言·前端·javascript·vue.js·react.js·typescript·ecmascript