通过开始和结束将多个行的时间序列数据合并为一个

时间:2018-04-30 08:42:09

标签: apache-spark apache-spark-sql spark-dataframe

我有一个看起来像这样的DataFrame

|Start   |End     |Description|Value|
|--------|--------|-----------|-----|
|01:02:00|01:05:00|A          |1.0  |
|01:05:00|01:08:00|A          |4.0  |
|01:08:00|01:11:00|A          |4.3  |
|01:11:00|01:15:00|B          |18.2 |
|01:21:00|01:55:00|C          |0.0  |
|01:55:00|02:07:00|A          |1.8  |

现在我的目标是使用spark将所有基本上属于一个大时期的时段组合在一起,像这样:

|Start   |End     |Description|Value(SUM)|
|--------|--------|-----------|----------|
|01:02:00|01:11:00|A          |9.3       |
|01:11:00|01:15:00|B          |18.2      |
|01:21:00|01:55:00|C          |0.0       |
|01:55:00|02:07:00|A          |1.8       |

所以,以某种方式把它放在文字中: 如果开始等于前一个结果且描述相同,我想合并两行。

我得到的问题是我需要以某种方式创建某种包含相干数据的窗口,但只要有不同的描述或最后结束时间不等于下一个开始时间就结束

我认为我不能仅仅在描述中使用groupby并在之后进行一些聚合,因为它错过了行的上下文(连贯的开始/结束)。

我已经尝试过使用超前和滞后的解决方案,并且我成功合并了句点,但是我无法处理这个值(对于一个简单的任务来说,它似乎也是一个非常复杂的操作)。

是否存在一种功能或方法来存档(以更好的方式)? 对于时间序列数据来说,这似乎是一个非常常见的过程,但我无法找到与此相关的任何资源。

0 个答案:

没有答案