Pyspark orderBy asc nulls last

Posted

技术标签:

【中文标题】Pyspark orderBy asc nulls last【英文标题】: 【发布时间】:2020-10-07 20:59:27 【问题描述】:

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

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

见Changing Nulls Ordering in Spark SQL。

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

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

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

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

我希望这样做:

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

但是Exception: mismatched input 'NULLS' expecting <EOF> 会出错

【问题讨论】:

使用.orderBy(F.asc_nulls_last('datetime')),见:spark.apache.org/docs/latest/api/python/…,或F.col('datetime').asc_nulls_last() 【参考方案1】:
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()))
)

【讨论】:

以上是关于Pyspark orderBy asc nulls last的主要内容,如果未能解决你的问题,请参考以下文章

Nulls first和nulls last

Oracle order by 处理NULL值

oracle的排序

8)排序分组

Oracle 排序中使用nulls first 或者nulls last 语法

order by用法