在pyspark或hive中查找两个连续状态之间的持续时间

时间:2018-10-25 05:48:04

标签: sql hive pyspark hiveql pyspark-sql

我有一个数据框,看起来像下面的列: ID, STATE and TIMESTAMP。 数据帧按照ID and TIMESTAMP排序。 我们需要找出state S1 to S2之间的时间间隔。

注意:对于特定的ID,我们可以在S1到S2之间进行多次转换。而且状态始终以S1开始,以S2结尾。

查看所附图片以获取更多信息:

Input in Blue and expected output in Green

1 个答案:

答案 0 :(得分:1)

     select id, 
        unix_timestamp(timestamp) - 
        unix_timestamp(lag(timestamp) over(partition by id order by timestamp)) as time_diff
        from table;