首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计算不断增加的日期序列Spark

计算不断增加的日期序列Spark
EN

Stack Overflow用户
提问于 2019-06-09 21:39:34
回答 1查看 453关注 0票数 -2

我在Spark中有一个名列和日期的dataframe。我想为每个名字找到所有不断增加的日期(日复一日)的连续序列,并计算它们的持续时间。输出应包含名称、开始日期(日期序列)和持续时间(天数)如何使用Spark函数完成此操作?

连续的日期序列示例:

2019-03-12
2019-03-13
2019-03-14
2019-03-15

我已经定义了这样的解决方案,但它通过每个名称计算总天数,而不是将其划分为序列:

val result = allDataDf
    .groupBy($"name")
    .agg(count($"date").as("timePeriod"))
    .orderBy($"timePeriod".desc)
    .head()

此外,我尝试了排名,但由于某些原因,计数列只有1:

val names = Window
    .partitionBy($"name")
    .orderBy($"date")
 val result = allDataDf
    .select($"name", $"date", rank over names as "rank")
    .groupBy($"name", $"date", $"rank")
    .agg(count($"*") as "count")

输出如下所示:

+-----------+----------+----+-----+
|stationName|      date|rank|count|
+-----------+----------+----+-----+
|       NAME|2019-03-24|   1|    1|
|       NAME|2019-03-25|   2|    1|
|       NAME|2019-03-27|   3|    1|
|       NAME|2019-03-28|   4|    1|
|       NAME|2019-01-29|   5|    1|
|       NAME|2019-03-30|   6|    1|
|       NAME|2019-03-31|   7|    1|
|       NAME|2019-04-02|   8|    1|
|       NAME|2019-04-05|   9|    1|
|       NAME|2019-04-07|  10|    1|
+-----------+----------+----+-----+
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56515057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档