2
我有一個表,看起來像這樣:如何獲得連續時間戳之間差異的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中做到這一點?我有幾千條記錄。我知道我需要先隔離時間。
我有一個表,看起來像這樣:如何獲得連續時間戳之間差異的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
)
我注意到 - 看起來像你的日期時間字段有着不同尋常的形式 - '16年5月1日12時29分34秒'
如果這是您執行上述查詢時遇到的問題 - 您可以嘗試下面的一個
請注意:對於此查詢,您n eed to enable Standard 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
)
)
謝謝你的迴應。但是,我有幾千個ID和日期時間,如何修改此查詢而不輸入每個ID和日期時間? – argunaw
只需在FROM之後使用您的表名。這幾個選擇被用作你的例子:o)看到除了回答 –