如何使用pyspark SQL基于时间获取累计值?

时间:2017-04-04 05:50:28

标签: python apache-spark apache-spark-sql

我有一张这样的表:

enter image description here

在此表中,artist_id代表特定歌手,Ds是日期(从2015年3月1日到4月底),like是有多少人喜欢这位歌手的这一天的歌曲。 我想获得like的累计值,例如,在20150303当天,该值将是20150301和20150302和20150303的原始值的总和。 我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用spark提供的聚合函数并获取输出。

您的问题是基于时间,但根据架构,它实际上是一列日期,因此您在Ds汇总并得到like的总和类似于

df.groupBy("Ds").sum("like")

更新: 要获取提供日期之前所有天数的总和,可以在将Reduce应用于提供的日期后使用filter来获取此日期和上一个日期的结果,然后使用reduce汇总所有日期或汇总函数sum

可以找到更多详细信息here