Spark:计算列值的百分比百分比

Foa*_*dod 6 scala percentage dataframe apache-spark

我正在努力提高我的Spark Scala技能,我有这个案例,我找不到一种方法来操纵所以请指教!

我有原始数据,如下图所示:

在此输入图像描述

我想计算count列的每个结果的百分比.例如,最后一个错误值是64,所有列值中的百分比是64.请注意,我使用sqlContext将原始数据作为Dataframes读取:这是我的代码:

    val df1 = df.groupBy(" Code")
.agg(sum("count").alias("sum"), mean("count")
.multiply(100)
.cast("integer").alias("percentag??e")) 
Run Code Online (Sandbox Code Playgroud)

我想要与此类似的结果:

在此输入图像描述

提前致谢!

小智 11

使用agg和窗口功能:

import org.apache.spark.sql.expressions._
import org.apache.spark.sql.functions._

df
  .groupBy("code")
  .agg(sum("count").alias("count"))
  .withColumn("fraction", col("count") /  sum("count").over())
Run Code Online (Sandbox Code Playgroud)

  • @FoaadMohamadHaddod如果答案帮助你更顺畅[接受](https://stackoverflow.com/help/someone-answers)它. (3认同)
  • @FoaadMohamadHaddod嗨,我得到`over()正好有2个参数(给定1个),为什么? (2认同)