如何做列的总和并使其在 Spark sql 中作为列可用



我的数据集上有以下场景。我需要对一些列值求和,而不会对其他列造成任何干扰。例如

这是我的数据集

 data_set,vol,channel
 Dak,10,ABC
 Fak,20,CNN
 Mok,10,BBC

我的预期输出是

 data_set,vol,channel,sum(vol)
 Dak,10,ABC,40
 Fak,20,CNN,40
 Mok,10,BBC,40

有什么办法可以在不加入的情况下实现这一目标.. 我需要优化的结果

您可以通过以下方式执行此操作:

import org.apache.spark.sql.functions.lit
import spark.implicits._
val df = Seq(("Dak",10," ABC"),
      ("Fak",20,"CNN"),
      ("Mok",10,"BBC")).toDF("data_set","vol","channel")
    val sum_df = df.withColumn("vol_sum", lit(df.groupBy().sum("vol").collect()(0).getLong(0)))
sum_df.show()
+--------+---+-------+-------+
|data_set|vol|channel|vol_sum|
+--------+---+-------+-------+
|     Dak| 10|    ABC|     40|
|     Fak| 20|    CNN|     40|
|     Mok| 10|    BBC|     40|
+--------+---+-------+-------+

希望它能帮助你。

相关内容

  • 没有找到相关文章

最新更新