2016-03-27 18 views
0

Ich habe Zeitstempel Spalte Werte in der Epoche (ex. Min Wert = 1276570880, max Wert = 1276657260). Wie gruppiere ich Datensätze in meiner Hive-Tabelle basierend auf 30-Minuten-Intervallen.Wie gruppiere ich Datensätze nach Zeitintervallen in der Hive-Tabelle?

Ich muss alle 30 Minuten einen Wert zählen, beginnend mit dem minimalen Zeitstempelwert bis zum maximalen Zeitstempelwert in der Zeitstempelspalte.

Ich habe die folgende Abfrage versucht, aber es hat keine Ergebnisse ergeben.

SELECT COUNT(method) AS mycount, FROM_UNIXTIME(floor(UNIX_TIMESTAMP(ts)/1800)*1800) 
FROM http 
WHERE ts >= '2010-06-14 20:01:20' 
AND ts <= '2010-06-14 22:01:20' 
AND method='GET' 
GROUP 
    BY FROM_UNIXTIME(
     floor(UNIX_TIMESTAMP(ts)/1800)*1800) 

Antwort

1

Dies sollte funktionieren. Die Verwendung von Runden auf den Zeitstempeln ist wichtig, damit die Gruppierung ordnungsgemäß funktioniert. Hier ist eine SQLfiddle example, die Ihr spezifisches Beispiel zeigt.

select count(method) as mycount, 
     from_unixtime(round(unix_timestamp(ts)) 
from http 
where ts >= '2010-06-14 20:01:20' 
and ts <= '2010-06-14 22:01:20' 
and method='GET' 
group by round(ts/1800) 
Verwandte Themen