Spark窗口功能过滤不符合要求的行



我想做的是获得两行的窗口的最大值。并删除最后一行,因为它只计算一行。

例如,下面是源数据
<表类>秒值tbody><<tr>2251.52450.53002.43191.23204.6

您可以根据降序秒分配行号,并使用过滤器删除最后一行:

from pyspark.sql import functions as F, Window
df2 = df.withColumn(
'max',
F.max('value').over(Window.orderBy('seconds').rowsBetween(0, 1))
).withColumn(
'rn',
F.row_number().over(Window.orderBy(F.desc('seconds')))
).filter('rn != 1').drop('rn', 'value')
df2.show()
+-------+---+
|seconds|max|
+-------+---+
|    319|4.6|
|    300|2.4|
|    245|2.4|
|    225|1.5|
+-------+---+

最新更新