2016-11-04 4 views

Antwort

1

Theres eine post auf materialisierte Ansichten. Sie können damit eine Kopie der nach Stunden gestapelten Daten erstellen. Verwenden Sie dann die durchschnittlichen Aggregatfunktionen beim Laden. Ich denke, CASSANDRA-11871 Ist das, was Sie suchen, obwohl alle seine Abhängigkeiten in group by vor kurzem abgeschlossen wurde, aber noch nicht bearbeitet worden ist.

Kinda nur raten auf dem Schema, aber so etwas wie (Disclaimer nicht wirklich getestet):

CREATE TABLE load (
ref_equip text, 
ptd_assoc text, 
date timestamp, 
date_hour bigint, 
load float, 
PRIMARY KEY ((ref_equip, ptd_assoc), date) 
); 

CREATE MATERIALIZED VIEW load_by_hour AS 
SELECT * FROM load 
WHERE ref_equip IS NOT NULL AND ptd_assoc IS NOT NULL 
PRIMARY KEY ((ref_equip, ptd_assoc), date_hour, date); 

wo date_hour nur der Zeitstempel mit Stunde Auflösung ist, teilt Bedeutung von 1000 * 60 * 60 (epoc ist ms) wenn Sie einfügen. Kann dann durchschnittlich wählen

SELECT avg(load) FROM load_by_hour WHERE ref_equip='blarg' AND ptd_assoc='blargy' AND date_hour = 410632; 

Alternativ etwas, das nur besser sein kann, mit beginnen Sie Daten zu speichern, die von Stunde aufgeteilt:

CREATE TABLE load (
ref_equip text, 
ptd_assoc text, 
date timestamp, 
date_hour bigint, 
load float, 
PRIMARY KEY ((ref_equip, ptd_assoc, date_hour), date) 
); 
+0

Humm, verstehe ich die Verwendung einer materialisierten Ansicht, aber ich kann verstehe nicht, wie man es schaffen kann, das "Datum" -Feld in ein Aggregat von Datum für Stunde zu verwandeln, wobei die Feldlast der Durchschnitt der 4 * 15min ist ...:/ –

+0

Grundsätzlich von dem, was ich verstehe, habe die 'load' Tabelle bereits die date_hour definiert, verwenden Sie einfach die Ansicht, um den Durchschnitt abzufragen, oder? Also, bevor ich die Daten in 'load' Tabelle einfügen muss ich den Zeitstempel bereits in ms durch 1000 * 60 * 60 .. teilen? –

+0

date_hour ist es, die Daten zu bunkern (Sie wollen keine unendlich wachsenden Partitionen) und einen Schlüssel für den MV zur Verfügung zu stellen. Erstellen Sie es, indem Sie den Zeitstempel genau teilen. Um dann nach ihr oder einer Reihe von ihnen zu suchen, müssen Sie nur diese Umwandlung durchführen, um die Partitionen zu kennen, die von –