2016-04-10 12 views
0

Ich versuche, einige Aggregation in einem Datenrahmen mit dieser einfachen Struktur zu machen:Aggregation mit beliebiger Granularität in Spark-

+--------------------+---------+---------+ 
|    date| data1| data2| 
+--------------------+---------+---------+ 
|2016-01-30 00:10:...| 0.0596| 0.5385| 
|2016-01-30 00:20:...| 0.05578| 0.5385| 
|2016-01-30 00:30:...| 0.03375| 0.5055| 
|2016-01-30 00:40:...| 0.0379| 0.51266| 
|2016-01-30 00:50:...| 0.05471| 0.5345| 
|2016-01-30 01:00:...| 0.0926| 0.54833| 
...... 

ich aggregieren müssen (SUM) data1 und Daten2, nach Datum gruppiert, mit einer beliebigen Granularität (zB täglich, stündlich, wöchentlich, 12 Stunden ...).

feine
SELECT TO_DATE(date) as date, SUM(data1) as data1, SUM(data2) as data2 
FROM my_table 
GROUP BY TO_DATE(date) 

Dies funktioniert, aber ich habe keine Ahnung, wie kann ich die anderen Aggregationen erreichen:

Ich habe gerade die täglich tun verwaltet.

Antwort

1

können Sie versuchen, so etwas wie:

SELECT concat(to_date(date), ':', hour(date)) as date_hour 
    ... 
GROUP BY date_hour 

Oder sogar

SELECT to_date(date), hour(date) 
    ... 
GROUP BY to_date(date), hour(date)