【发布时间】:2018-06-01 15:57:23
【问题描述】:
我有示例数据框, 按级别 1 和日期分组后,我得到了结果数据框:
val group_df = qwe.groupBy($"level1",$"date").agg(sum("rel_amount").as("amount"))
+------+----------+------+
|level1| date|amount|
+------+----------+------+
| A|2016-03-31| 100|
| A|2016-02-28| 100|
| A|2016-01-31| 400|
| A|2015-12-31| 500|
| A|2015-11-30| 1200|
| A|2015-10-31| 1300|
| A|2014-12-31| 600|
| B|2016-03-31| 10|
| B|2016-02-28| 300|
| B|2016-01-31| 423|
| B|2015-12-31| 501|
| B|2015-11-30| 234|
| B|2015-10-31| 1234|
| B|2014-12-31| 3456|
+------+----------+------+
现在我想添加额外的列(上一列)作为年末,在此列中我需要获取每个组的上一年末金额的值。
例如:对于 level1 :A, date=2016-03-31,该值应为 500,因为它是 2015-12-31 的金额。 同样,对于 date= 2015-12-31,该值应为 600,因为 2014-12-31 的金额。需要计算每一行的上一年年末金额。
预期输出:
+------+----------+------+--------+
|level1| date|amount|Previous|
+------+----------+------+--------+
| A|2016-03-31| 100| 500|
| A|2016-02-28| 100| 500|
| A|2016-01-31| 400| 500|
| A|2015-12-31| 500| 600|
| A|2015-11-30| 1200| 600|
| A|2015-10-31| 1300| 600|
| A|2014-12-31| 600| 600|
| B|2016-03-31| 10| 501|
| B|2016-02-28| 300| 501|
| B|2016-01-31| 423| 501|
| B|2015-12-31| 501| 3456|
| B|2015-11-30| 234| 3456|
| B|2015-10-31| 1234| 3456|
| B|2014-12-31| 3456| 3456|
+------+----------+------+--------+
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: scala apache-spark spark-dataframe