Поскольку отдельные оконные функции не поддерживаются, мы можем сделать это с помощью объединения.
val df = Seq(
("South", "GA", 23, 1, 35),
("South", "GA", 23, 2, 50),
("South", "FL", 35, 3, 60),
("South", "FL", 35, 4, 22)
).toDF("Region", "State", "Volume", "Hour", "Price")
val totals = df
.select($"Region", $"State", $"Volume")
.distinct()
.groupBy($"Region")
.agg(sum($"Volume") as "TotalVolumeInRegion")
df.join(totals, usingColumn = "Region").show()
Выход:
+------+-----+------+----+-----+-------------------+
|Region|State|Volume|Hour|Price|TotalVolumeInRegion|
+------+-----+------+----+-----+-------------------+
| South| GA| 23| 1| 35| 58|
| South| GA| 23| 2| 50| 58|
| South| FL| 35| 3| 60| 58|
| South| FL| 35| 4| 22| 58|
+------+-----+------+----+-----+-------------------+