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的主要内容,如果未能解决你的问题,请参考以下文章