2016-07-26 13 views
2

Ich habe eine Tabelle, die wie folgt aussieht:Wie Differenz zwischen aufeinander folgenden Zeitmarken in BigQuery Get

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 

Ich möchte für jede ID die Differenz in Sekunden zwischen den einzelnen aufeinanderfolgenden Zeitstempel zu finden. Gibt es eine Möglichkeit, dies in BigQuery zu tun? Ich habe mehrere tausend Datensätze. Ich weiß, dass ich die Zeit von dem Datum zuerst isolieren muss.

Antwort

1

versuchen unter

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) 
) 

hinzugefügt

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 
) 

ich bemerkt - wie Ihr Datetime-Feld sieht hat ungewöhnliche Format - '5-1-16 12.29.34'
Wenn dies ein Problem für Sie bei der Implementierung der obigen Abfrage ist - können Sie versuchen, unter einem
Bitte beachten Sie: für diese Abfrage Sie n eed zu 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 
) 
) 
+0

Vielen Dank für die Antwort. Ich habe jedoch mehrere tausend IDs und Datumsangaben. Wie kann ich diese Abfrage ändern, ohne jede ID und Datetime einzugeben? – argunaw

+0

verwenden Sie einfach Ihren Tabellennamen nach FROM. Diese wenigen Auswahlen wurden als ein Beispiel für dich verwendet: o) siehe Zusatz zu beantworten –

Verwandte Themen