howto:datenmengen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
howto:datenmengen [2018/12/04 08:49] – wf_bitplan.com | howto:datenmengen [2019/05/19 12:30] – Refferenz auf Konfigurationsdatei entfernt. (Konfigurationsdatei wurde umbenannt und option wurde entfernt) ofeilner | ||
---|---|---|---|
Zeile 60: | Zeile 60: | ||
Die Lösung besteht aus zwei Komponenten. Die eine ist bereits im Frontend eingebaut und aktiviert sich automatisch, | Die Lösung besteht aus zwei Komponenten. Die eine ist bereits im Frontend eingebaut und aktiviert sich automatisch, | ||
- | Zunächst muss die Option in der volkszaehler.conf.php aktiviert werden: (die findet ihr unter: / | + | |
- | < | + | |
Die folgende Zeile aggregiert alle bestehenden Daten. Der Vorgang kann daher einige Stunden benötigen: | Die folgende Zeile aggregiert alle bestehenden Daten. Der Vorgang kann daher einige Stunden benötigen: | ||
Zeile 134: | Zeile 133: | ||
^ " | ^ " | ||
^ " | ^ " | ||
- | |||
- | ===== Aggregieren mit mySQL ===== | ||
- | **Function channelSum** | ||
- | Die folgende mySQL Hilfsfunktion berechnet die " | ||
- | der höchste und der niedrigste Wert gesucht. Es gilt sum=max - min für solche Zähler. | ||
- | |||
- | Der Aggregationseffekt von channelSum hängt von der Frequenz der Datenerhebung und der Länge des Intervals ab. Bei der Erhebung eines Wertes alle 15 Minuten und einer Zeitraumbreite von einem Tag werden 15x24 = 320 x weniger Daten geliefert. | ||
- | < | ||
- | -- | ||
- | -- Volkszähler mySQL function to sum up channel data for a given time period | ||
- | -- | ||
- | -- params | ||
- | -- channel_id | ||
- | -- from_time | ||
- | -- to_time | ||
- | -- | ||
- | CREATE FUNCTION channelSum(channel_id INT, from_time DATE, to_time DATE) | ||
- | RETURNS DOUBLE | ||
- | DETERMINISTIC | ||
- | BEGIN | ||
- | | ||
- | | ||
- | | ||
- | FROM data d | ||
- | WHERE d.timestamp between unix_timestamp(from_time)*1000 and unix_timestamp(to_time)*1000 and d.channel_id=channel_id; | ||
- | | ||
- | END | ||
- | </ | ||
- | |||
- | **Daily Tabelle** | ||
- | Das folgende mySQL Script erzeugt mit Hilfe der obigen " | ||
- | |||
- | Als Basis diente eine SQL-Abfrage zur Erzeugung einer Liste von Tagen siehe: https:// | ||
- | |||
- | < | ||
- | create table daily as | ||
- | select | ||
- | dates.from_date, | ||
- | from ( | ||
- | select | ||
- | date_add(' | ||
- | date_add(' | ||
- | from ( | ||
- | SELECT @row := @row + 1 as row FROM | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t, | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t2, | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t3, | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t4, | ||
- | (SELECT @row:=-1) r | ||
- | ) sequence | ||
- | where date_add(' | ||
- | join entities | ||
- | join properties p on e.id=p.entity_id | ||
- | join properties r on e.id=r.entity_id | ||
- | where p.pkey=' | ||
- | and e.type=' | ||
- | </ | ||
===== Aufrüstung: | ===== Aufrüstung: |
howto/datenmengen.txt · Zuletzt geändert: 2021/08/11 13:31 von mr.gosh