我正在努力提高我的Spark Scala技能,我有这个案例,我找不到操作的方法,所以请指教!
我有原始数据,如下图所示:
我想计算count列的每个结果的百分比。例如。最后一个错误值是64,所有列值中的百分比是64。请注意,我使用sqlContext将原始数据作为Dataframes读取: 这是我的代码:
val df1 = df.groupBy(" Code")
.agg(sum("count").alias("sum"), mean("count")
.multiply(100)
.cast("integer").alias("percentage"))
我想要与此类似的结果:
提前致谢!
答案 0 :(得分:10)
使用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())