Pyspark orderBy asc nulls last

Oct 08 2020

No spark sql, você pode usar asc_nulls_lastem um orderBy, por exemplo

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

consulte Alterando a ordenação de nulos no Spark SQL .

Como você faria isso no pyspark?

Estou usando isso especificamente para fazer uma espécie de "janela sobre":

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

onde a datetimecoluna pode ser datetime ou null.

Eu esperava fazer isso com:

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

Mas esses erros com Exception: mismatched input 'NULLS' expecting <EOF>

Respostas

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