我的数据框有三列
amount type id
12 A 1
10 C 1
21 B 2
10 A 2
2 B 3
44 B 3
我需要对每种类型的金额求和,然后按id
对它们进行分组。我的解决方案就像
GroupedData result = dataFrame.agg(
when(dataFrame.col("type").like("A%")
.or(dataFrame.col("type").like("C%")),
sum("amount"))
.otherwise(0)
).agg(
when(dataFrame.col("type").like("B%"), sum("amount"))
.otherwise(0)
)
.groupBy(dataFrame.col("id"));
这对我来说不合适。我需要返回DataFrame
作为数据结果
amount type id
22 A or C 1
21 B 2
10 A 2
46 B 3
我不能使用双groupBy
,因为两种不同的类型可能在一个总和中。你有什么建议吗?
我使用java和Apache Spark 1.6.2。