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

相关推荐
harrain16 分钟前
什么!vue3.4开始,v-model不能用在prop上
前端·javascript·vue.js
阿蒙Amon5 小时前
TypeScript学习-第7章:泛型(Generic)
javascript·学习·typescript
睡美人的小仙女1275 小时前
Threejs加载环境贴图报错Bad File Format: bad initial token
开发语言·javascript·redis
fanruitian6 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo6 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk6 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
摘星编程6 小时前
React Native + OpenHarmony:Timeline垂直时间轴
javascript·react native·react.js
2501_944525547 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
jin1233228 小时前
React Native鸿蒙跨平台完成剧本杀组队详情页面,可以复用桌游、团建、赛事等各类组队详情页开发
javascript·react native·react.js·ecmascript·harmonyos
李白你好8 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端