Pyspark orderBy asc 最后为空

eha*_*nom 1 apache-spark pyspark

在 spark sql 中,您可以asc_nulls_last在 orderBy 中使用,例如

df.select('*').orderBy(column.asc_nulls_last).show
Run Code Online (Sandbox Code Playgroud)

请参阅在 Spark SQL 中更改空值排序

你会如何在 pyspark 中做到这一点?

我专门用它来做一个“窗口覆盖”之类的事情:

df = df.withColumn(
    'rank',
    row_number().over(Window.partitionBy('group_id').orderBy('datetime'))
)
Run Code Online (Sandbox Code Playgroud)

其中datetime列可以是日期时间或空值。

我希望这样做:

...orderBy(expr('column asc NULLS last'))
Run Code Online (Sandbox Code Playgroud)

但是这个错误 Exception: mismatched input 'NULLS' expecting <EOF>

小智 5

from pyspark.sql import functions as F
df = df.withColumn(
    'rank',
    F.row_number().over(Window.partitionBy('group_id').orderBy(F.col('datetime').asc_nulls_last()))
)
Run Code Online (Sandbox Code Playgroud)