假设我有一个这样的表
您可以使用窗口函数,按id
划分,按date
排序。
from pyspark.sql import functions as F
from pyspark.sql import Window
df = spark.createDataFrame(
[(1, '01/04', 7),
(1, '01/03', 2),
(1, '01/02', 10),
(1, '01/01', 4),
(2, '01/04', 7),
(2, '01/03', 7),
(2, '01/02', 8),
(2, '01/01', 5)],
['id', 'date', 'value']
)
df.createOrReplaceTempView('sample_data')
PySpark (dataframe API)
w = Window().partitionBy('id').orderBy('date').rowsBetween(-2, -1)
df = df.withColumn('avg', F.avg('value').over(w))
df.orderBy(F.col('id').asc(), F.col('date').desc()).show()
+---+-----+-----+----+
| id| date|value| avg|
+---+-----+-----+----+
| 1|01/04| 7| 6.0|
| 1|01/03| 2| 7.0|
| 1|01/02| 10| 4.0|
| 1|01/01| 4|null|
| 2|01/04| 7| 7.5|
| 2|01/03| 7| 6.5|
| 2|01/02| 8| 5.0|
| 2|01/01| 5|null|
+---+-----+-----+----+
SQLspark.sql(
'''
SELECT
id,
date,
value,
AVG(value) OVER (PARTITION BY id ORDER BY date ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING) AS avg
FROM sample_data
ORDER BY id, date DESC
''').show()
+---+-----+-----+----+
| id| date|value| avg|
+---+-----+-----+----+
| 1|01/04| 7| 6.0|
| 1|01/03| 2| 7.0|
| 1|01/02| 10| 4.0|
| 1|01/01| 4|null|
| 2|01/04| 7| 7.5|
| 2|01/03| 7| 6.5|
| 2|01/02| 8| 5.0|
| 2|01/01| 5|null|
+---+-----+-----+----+
相关内容
- 没有找到相关文章
最新更新
- 将每小时ERA5 netcdf文件合并为每日文件
- 打字脚本"TS2339:属性'X'在类型'Y'"错误中不存在,即使定义了类型
- 尝试添加背景音乐到web应用程序
- 构建错误.在scala框架中使用PlayScala
- Ruby on Rails -从数组中获取前n个元素
- 没有更多的数据!现在,刮痧将会停止.不能使用twint获取更多tweets
- 为什么我不能在空对象上调用方法view()
- Python类和协议的多重继承
- 正在写IIS重定向规则
- .net5程序的w3wp进程的非托管内存泄漏,内存占用在哪里?
- TypeError: _getfullpathname:路径应该是字符串、字节或os.PathLike,而不是list
- 如何在typescript中设置React Native中的全局变量?
- Mac上已安装但未被IDLE识别
- 包含相同站点参数的PHP setcookie函数不起作用
- 如何修改Dart中的"打印"功能?
- 在Oauth应用程序中,如何从express服务器传递访问令牌到react应用程序?
- <a> 在按钮提交时打开选定的标签链接?
- 具有重复图像作为装饰的水平可滚动容器
- 错误:宏"断言"传递了 2 个参数,但只占用 1 个参数
- 如何检测Android设备在其浏览器中访问的链接并将url发送到另一个应用程序?
- #SET TERMINATOR语句的目的是什么?
- 类型错误:只能将 str(不是"字节")连接到套接字模块中的 str
- react-router-dom:如何用某种模式匹配url
- 为什么将单个字节类型转换为字符串在go中不起作用?
- 如何在MySql中返回不同的列而不是标准列?查询
- Listener Facebook Login in Supabase Flutter
- Javascript添加类到多个元素,除了一个
- 在windows上使用R导入xkcd字体(适用于xkcd包)
- 如何在用户输入不正确的值后使python循环程序?
- <picture> 元素在媒体查询/属性之间闪烁到 100% 宽度
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium