Pyspark orderBy asc nulls last

Oct 08 2020

In spark sql können Sie asc_nulls_lastin einer Bestellung verwenden, z

df.select('*').orderBy(column.asc_nulls_last).show

Siehe Ändern der Nullreihenfolge in Spark SQL .

Wie würden Sie das in pyspark machen?

Ich benutze dies speziell, um so etwas wie ein "Fenster über" zu machen:

df = df.withColumn(
    'rank',
    row_number().over(Window.partitionBy('group_id').orderBy('datetime'))
)

Dabei kann die datetimeSpalte datetime oder null sein.

Ich hatte gehofft, es zu tun mit:

...orderBy(expr('column asc NULLS last'))

Aber dieser Fehler mit Exception: mismatched input 'NULLS' expecting <EOF>

Antworten

3 busfighter Oct 08 2020 at 04:05
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()))
)