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

相关推荐
En^_^Joy9 分钟前
JavaScript入门指南:从零到精通
开发语言·javascript
前端小趴菜0512 分钟前
vue3-signature实现电子签名
前端·javascript·vue.js
玉米Yvmi14 分钟前
React自定义Hook实战指南:从入门到精通,让你的代码像乐高一样灵活
前端·react.js·面试
CharlieWang22 分钟前
AI + Cloudflare = 你需要的全部
前端·敏捷开发·全栈
董员外25 分钟前
从零实现 AI 编程助手:LangChain.js + ReAct 循环实战
前端·javascript·后端
bluceli26 分钟前
JavaScript BigInt:处理大数值的终极解决方案
前端·javascript
不懂代码的切图仔29 分钟前
小程序web-view嵌入h5扫码 html5-qrcode库使用方法
前端·微信
不懂代码的切图仔29 分钟前
小程序web-view嵌入h5扫码 jssdk方式
前端·微信小程序
软弹32 分钟前
Vue2、Vue3、React 状态管理全方位对比
前端·javascript·vue.js·react.js
王启年33 分钟前
npm link 详解:本地包开发与测试的利器
前端