【问题标题】:How to round decimal in SPARK SQL如何在 SPARK SQL 中舍入小数点
【发布时间】:2021-05-30 18:01:52
【问题描述】:

我有一个包含以下数据的 Scala Spark SQL。如何将分数离散化/四舍五入到下面给出的最接近的小数位。因为我没有找到任何预定义的函数。谁能帮我解决这个问题。

49.5 --> from 49.50 to 49.99 
50 ---> 50.0 to 50.49
50.5 --->50.5 to 50.99 
4.5 ---> 4.50 to 4.99
5.0 ---> 5.0 to 5.49
9.5 --> 9.50 to 9.99
10--->10 to 10.49

我想要范围 49.50 到 49.99 的值 49.5 和范围 10 到 10.49 的值 10。等等

【问题讨论】:

    标签: sql scala apache-spark pyspark apache-spark-sql


    【解决方案1】:

    对任何数字进行四舍五入的更通用解决方案(我添加了两行来说明)。

    val df2 = df.withColumn("val2", ((col("val") / 0.5).cast("int"))*0.5)
    
    df2.show
    +-----+----+
    |  val|val2|
    +-----+----+
    | 49.5|49.5|
    |49.99|49.5|
    | 50.0|50.0|
    |  1.1| 1.0|
    |  9.9| 9.5|
    | 10.0|10.0|
    +-----+----+
    

    对于 Spark SQL:

    df.createOrReplaceTempView("df")
    spark.sql("select val, int(val / 0.5) * 0.5 as val2 from df").show
    +-----+----+
    |  val|val2|
    +-----+----+
    | 49.5|49.5|
    |49.99|49.5|
    | 50.0|50.0|
    |  1.1| 1.0|
    |  9.9| 9.5|
    | 10.0|10.0|
    +-----+----+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2013-09-07
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多