Pyspark orderBy asc nulls last

Oct 08 2020

Dans Spark SQL, vous pouvez utiliser asc_nulls_lastdans un orderBy, par exemple

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

voir Modification de l'ordre des valeurs nulles dans Spark SQL .

Comment feriez-vous cela dans pyspark?

J'utilise spécifiquement ceci pour faire une sorte de "fenêtre sur":

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

où la datetimecolonne peut être une date / heure ou une valeur nulle.

J'espérais le faire avec:

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

Mais ces erreurs avec Exception: mismatched input 'NULLS' expecting <EOF>

Réponses

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()))
)