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

相关推荐
90后的晨仔13 小时前
从 H5 到 uni-app:一篇写给前端小白的"翻译指南"
前端·vue.js·前端框架
陈随易13 小时前
moon,apt和yum之外linux系统命令安装新选择
前端·后端·程序员
IT小盘13 小时前
13-企业Prompt模板-角色任务约束与输出格式
java·前端·prompt
徐小夕14 小时前
开源!我用SQLite + DuckDB打造了一款可视化AI问数平台
前端·算法·github
leslie11814 小时前
babel笔记
前端
用户0595401744615 小时前
Redis 记忆存储踩坑实录:一个并发写入 Bug 让我排查了 4 小时
前端·css
小徐_233316 小时前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·微信小程序·uni-app
kyriewen16 小时前
Claude自己跑出去hack了3家公司——我为什么还在用它写代码
前端·ai编程·claude
IT_陈寒16 小时前
SpringBoot自动配置的坑,这次真踩疼我了
前端·人工智能·后端
子兮曰16 小时前
AI 浏览器 Agent 的安全困局:当自动化工具可以偷走你的登录态
前端·人工智能·后端