繁体   English   中英

如何在BigQuery中获得连续时间戳之间的差异

[英]How to Get Difference Between Consecutive TimeStamps in BigQuery

我有一个看起来像这样的表:

ID    DateTime
1     5-1-16 12:25:13
1     5-1-16 12:28:46
2     5-1-16 12:25:18
2     5-1-16 12:29:34

我想找到每个ID的每个连续时间戳之间以秒为单位的差异。 有没有办法在BigQuery中做到这一点? 我有几千条记录。 我知道我需要先将时间与日期分开。

试试下面

SELECT
  ID, 
  TIMESTAMP_TO_SEC(TIMESTAMP(DateTime))-TIMESTAMP_TO_SEC(TIMESTAMP(prev_DateTime)) AS diff,
FROM (
  SELECT 
    ID,
    DateTime,
    LAG(DateTime) OVER(PARTITION BY ID ORDER BY DateTime) AS prev_DateTime
  FROM 
    (SELECT 1 AS ID, '2016-05-01 12:25:13' AS DateTime),
    (SELECT 1 AS ID, '2016-05-01 12:28:46' AS DateTime),
    (SELECT 2 AS ID, '2016-05-01 12:25:18' AS DateTime),
    (SELECT 2 AS ID, '2016-05-01 12:29:34' AS DateTime)
)

添加

 SELECT
  ID, 
  TIMESTAMP_TO_SEC(TIMESTAMP(DateTime))-TIMESTAMP_TO_SEC(TIMESTAMP(prev_DateTime)) AS diff,
FROM (
  SELECT 
    ID,
    DateTime,
    LAG(DateTime) OVER(PARTITION BY ID ORDER BY DateTime) AS prev_DateTime
  FROM YourTable
)

我注意到-看起来您的DateTime字段格式不正常-'5-1-16 12:29:34'
如果您在执行上述查询时遇到问题-您可以尝试以下一项
请注意:对于此查询,您需要启用标准SQL

SELECT
  ID, 
  UNIX_SECONDS(DateTime) - UNIX_SECONDS(prev_DateTime) AS diff
FROM (
  SELECT 
    ID,
    DateTime,
    LAG(DateTime) OVER(PARTITION BY ID ORDER BY DateTime) AS prev_DateTime
  FROM (
    SELECT
      ID, 
      PARSE_TIMESTAMP("%m-%d-%y %H:%M:%S", DateTime) AS DateTime
    FROM YourTable  
  )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM