spark window函数过滤不符合要求的行

7kqas0il  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(392)

我想做的是得到两排Windows的最大值。并删除最后一行,因为它只计算一行。
例如,下面是源数据
二级值2251.52450.53002.43191.23204.6
下表就是我想要的。它下降了320秒,因为它是最新的,它只有自己的。
第二封MAX2251.52452.43002.43194.6

aij0ehis

aij0ehis1#

您可以根据降序秒数指定行号,并使用筛选器删除最后一行:

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|
+-------+---+

相关问题