[vz-dev] Error executing grouped queries

Jakob Hirsch jh at plonk.de
Fri Mar 29 02:42:22 CET 2013


On 27.03.2013 21:37, Andreas Goetz wrote:
> hi, Developers,
> 
> ich habe probleme gruppierte anfragen auszuführen:
> 
> http://localhost/vz/middleware.php/data/8f20eb60-60df-11e2-81a1-3d3ab836429e.json?group=year

Cool, group= kannte ich selbst garnicht. Mit was für einem Channel
benutzt du das denn?

> dürfte DataIterator __construct sein:
>     // skipping first reading, just for getting first timestamp
>     $this->from = $this->stmt->fetchColumn();
> Wenn es nur 1 row im resultset gibt verschwindet dann genau diese. Wenn
> die Zeile auskommentiert wird läuft es.

Jein. Für group wird die selbe Leistungsberechnung durchgeführt wie
sonst auch, und dafür werden eben mindestens zwei Zeitstempel gebraucht.
group fasst aber komplette Zeiträume vorher zusammen, so daß pro
group-Intervall nur ein Tupel (timestamp, value-sum) rauskommt. Damit
vom aktuellen group-Intervall was angezeigt werden kann, braucht man
also noch den letzten Zeitstempel des vorherigen Intervalls. Für normale
Queries wird der schon geholt, ist also kein großes Problem, daß auch
für group zu machen. Ist auch eine gute Gelegenheit, getData etwas
aufzuhübschen. Ich mach das mal.

Etwas verwirrend ist aber auch die Ausgabe, da (wie sonst auch) der
timestamp des Intervall-Starts angegeben wird, der liegt aber jeweils im
vorherigen group-Interval. Beispiel (Testdaten, als csv):

# from: 2013-03-17 23:59:04
# to: 2013-03-29 02:25:05
# min: 2013-03-19 23:31:34 => 1,377
# max: 2013-03-18 23:59:59 => 298,174
# average: 83,773
# consumption: 22320
# rows: 6
2013-03-17 23:59:04;298,143;1432
2013-03-18 23:59:59;298,174;1403
2013-03-19 23:31:34;1,377;53
2013-03-27 23:59:09;298,138;1431
2013-03-28 23:59:05;297,935;145

Die letzte Zeile bedeutet, daß von 2013-03-28 23:59:05 bis jetzt
(genauer: zum letzten vorliegenden Impuls) die Durchschnittsleistung
297,935W war.



More information about the volkszaehler-dev mailing list