Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala中的嵌套case_Scala_Apache Spark - Fatal编程技术网

scala中的嵌套case

scala中的嵌套case,scala,apache-spark,Scala,Apache Spark,我对scala非常陌生,需要写一些我不理解的案例,以获得正确的东西: 例如,我需要转换下面的 CASE WHEN ( IS-NULL (Number, 0)) > 0 THEN IS-NULL( (ROUND(number / ((100/number)+1),2) * number), 0 ) ELSE 0 END AS Number_Ratio 我试过这样做: --创建数据帧 val someDF = Seq( (8, "bat"), (64, "mouse"),

我对scala非常陌生,需要写一些我不理解的案例,以获得正确的东西:

例如,我需要转换下面的

 CASE WHEN ( IS-NULL (Number, 0)) > 0

THEN IS-NULL( (ROUND(number / ((100/number)+1),2) * number), 0 )

ELSE 0 END AS Number_Ratio
我试过这样做:

--创建数据帧

val someDF = Seq(
  (8, "bat"),
  (64, "mouse"),
  (0,   "abc")
).toDF("number", "word")
--案例陈述

someDF.select("*").withColumn("NUMBER_RATIO",when (when($"number".isNull,lit(0))>0, when(ROUND($"number" / ((100/$"number"))+1),2* $"number")).isNull,0).otherwise(lit(0)).show()
其中我得到了错误:

<console>:26: error: too many arguments for method withColumn: (colName: String, col: org.apache.spark.sql.Column)org.apache.spark.sql.DataFrame
:26:错误:with Column方法的参数太多:(colName:String,col:org.apache.spark.sql.Column)org.apache.spark.sql.DataFrame

Cananyone,请帮帮我,我做错了什么

我会给你一些提示,你自己已经很接近了:)

  • IS-NULL(number,0)
    Spark
    as
    coalesce($“number”,lit(0))
  • ROUND(number,2)
    可以表示为
    pround($“number”,2)
    -这就是你的错误所在
  • CASE WHEN(condition)THEN(THEN_子句)ELSE(ELSE_子句)
    WHEN(condition,THEN_子句)。否则(ELSE_子句)

  • 如果您有更多问题,请随时在评论中提问。祝你好运。

    获取此错误:26:error:overloaded method value/以及其他选项:(x:Double)Double(x:Float)Float(x:Long)Long(x:Int)Int(x:Char)Int(x:Short)Int(x:Byte)Int不能应用于(org.apache.spark.sql.ColumnName)someDF.select(“*”).withColumn(“TaxRate”),when(coalesce($“number”,lit(0))>0,合并(圆形($“数字”/((100/$“数字”)+1),2)*$“数字”,lit(0))。否则(lit(0))。show()@AnkurSharma提示:必须用
    lit()包装文字值