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/11/30 09:58] – [Aggregieren mit mySQL] wf_bitplan.com | howto:datenmengen [2018/12/10 17:34] – alte Version wiederhergestellt (2018/04/03 13:23) jau | ||
---|---|---|---|
Zeile 134: | Zeile 134: | ||
^ " | ^ " | ||
^ " | ^ " | ||
- | |||
- | ===== 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. | ||
- | < | ||
- | -- | ||
- | -- 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 eine " | ||
- | Im Beispiel werden die Werte für den Zeitraum 2014-01-01 bis 2018-11-30 aufsummiert. Für die Erzeugung von 7450 Einträgen hat diese Abfrage ca. 2700 Sekunden Zeit gebraucht. | ||
- | |||
- | 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