【问题标题】:Extract IDs based on difference in timestamp根据时间戳的差异提取ID
【发布时间】:2020-12-30 07:08:56
【问题描述】:

我有一个包含两列(“time_stamp”和“ID”)的 Spark 数据框。

示例数据框:

      **ID**                **time_stamp**
       1AB               2015-01-23 08:23:16
       1AB               2015-01-23 08:54:40
      25CD               2015-01-23 09:02:20
       1AB               2015-01-23 10:15:36
       1AB               2015-01-23 12:38:40
       1AB               2015-01-24 08:25:16
       1AB               2015-01-24 08:53:40
      25CD               2015-01-24 09:01:20
       1AB               2015-01-24 10:14:36
       1AB               2015-01-24 12:30:40

如果时间戳与第一次出现的时间差小于 3 小时(保留最先出现的 ID),我想删除重复的 ID(保留第一次出现),如果差值大于 3 小时,我想保留 ID。

预期输出:

      **ID**                **time_stamp**
       1AB               2015-01-23 08:23:16
      25CD               2015-01-23 09:02:20
       1AB               2015-01-23 12:38:40
       1AB               2015-01-24 08:25:16
      25CD               2015-01-24 09:01:20
       1AB               2015-01-24 12:30:40

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    您可以使用first 获取所需的时间戳差异,并对差异进行过滤:

    from pyspark.sql import functions as F, Window
    
    result = df.withColumn(
        'lag',
        F.col('time_stamp').cast('long') -
        F.first('time_stamp')
         .over(Window.partitionBy('ID', F.date_trunc('day', 'time_stamp'))
                     .orderBy('time_stamp'))
         .cast('long')
    ).filter('lag > 60*60*3 or lag = 0 or lag is null').drop('lag')
    
    result.show()
    +----+-------------------+
    |  ID|         time_stamp|
    +----+-------------------+
    | 1AB|2015-01-23 08:23:16|
    | 1AB|2015-01-23 12:38:40|
    |25CD|2015-01-23 09:02:20|
    |25CD|2015-01-24 09:01:20|
    | 1AB|2015-01-24 08:25:16|
    | 1AB|2015-01-24 12:30:40|
    +----+-------------------+
    

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2019-04-20
      相关资源
      最近更新 更多