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 分钟前
【CSS】类似渐变色弯曲border
前端·css
DanyHope4 分钟前
LeetCode 两数之和:从 O (n²) 到 O (n),空间换时间的经典实践
前端·javascript·算法·leetcode·职场和发展
hgz07105 分钟前
企业级多项目部署与Tomcat运维实战
前端·firefox
zhoumeina995 分钟前
懒加载图片
前端·javascript·vue.js
用户1887871069847 分钟前
SVG描边 - CSS3实现动画绘制矢量图
前端
码上行走7 分钟前
【实战】Flex布局-上下自适应
前端
DarkLONGLOVE7 分钟前
Vue的“小外挂”:玩转自定义指令
前端·javascript·vue.js
用户1887871069848 分钟前
前端实现页面截图及截图内容包含跨域图片时的处理
javascript
ccino .9 分钟前
pdf-xss文件制作过程
前端·pdf·xss
晚烛9 分钟前
实战前瞻:构建高韧性、可扩展的 Flutter + OpenHarmony 智慧政务服务平台
javascript·flutter·政务