【问题标题】:Do not ignore NULL in MAX不要忽略 MAX 中的 NULL
【发布时间】:2022-07-16 18:07:01
【问题描述】:

使用这个数据框:

from pyspark.sql import functions as F
df = spark.createDataFrame([(None,), (1,), (2,)], ['col_name'])
df.show()
# +--------+
# |col_name|
# +--------+
# |    null|
# |       1|
# |       2|
# +--------+

计算MAX默认忽略空值:

max = F.max('col_name').alias('col_name')
df.agg(max).show()
# +--------+
# |col_name|
# +--------+
# |       2|
# +--------+

有没有办法使用MAX 进行聚合,但不忽略空值?如果有 null,它应该返回 null。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql null max


    【解决方案1】:

    我们可以这样做,但它很冗长......

    max = F.when(F.expr("any(col_name is null)"), None).otherwise(F.max("col_name")).alias("col_name")
    df.agg(max).show()
    # +--------+
    # |col_name|
    # +--------+
    # |    null|
    # +--------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-05
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 2014-06-25
      相关资源
      最近更新 更多