Ich denke jetzt nochmal laut... 2013/10/28 Andreas Goetz <cpui...@gmail.com>
> Moin, > > 2013/10/28 Thorben Thuermer <r...@constancy.org> > >> ... >> >> > Im Ergebnis führt das dazu, dass das FE hässliche "Rampen" an den >> Stellen >> > anzeigt wo von 0-Werten (bzw. Stellen in der DB mit längeren >> Intervallen) >> > wieder auf Daten übergegangen wird. >> >> beschraenkt sich das problem nicht drauf, jeweils die erste UND die letzte >> null drinzulassen? >> wenn du die letzte loescht, kann die middleware halt nichtmehr sagen, in >> welchem zeitraum die naechste aenderung stattgefunden hat, >> und verteilt sie halt auf den gesamten zeitraum seit dem letzten wert. >> > > Schon getestet- tut es leider nicht. Das Problem ist "so gross", wie Tupel > zusammengezählt werden. Wenn z.B. 2 Tupel am Ende vom Vortag aus 0 und x > auf x/2 aggregiert werden und die ersten beiden Tupel vom Foleetag (0 und > y) auf y/2 aggregiert, dann bedeutet das schlimmstenfalls eine Rampe von > x/2 bis y/2 ohne dass die 0 jeweils im FE angezeigt wird. Je mehr Tupel > aggegiert werden desto größer die Abweichung. > Das Problem ist dass wir im Moment (wenn das FT tupels=xyz übergibt) Pakete schnüren. Seit dem entsprechenden Patch macht das die Datenbank: $sql = 'SELECT MAX(aggregate.timestamp) AS timestamp, SUM(aggregate.value) AS value, COUNT(aggregate.value) AS count '. 'FROM ('. ' SELECT timestamp, value, @row:=@row+1 AS row '. ' FROM data WHERE channel_id=?' . $sqlTimeFilter . ') AS aggregate '. 'GROUP BY row DIV ' . $packageSize .' '. 'ORDER BY timestamp ASC'; > In Griff kriegen liesse sich das nur wenn das FE einen irgendwie einen > Hinweis bekommen wird dass zwischendurch die 0 "steht" und die Daten > ausgedünnt sind. > > Was spräche denn jetzt dagegen, stattdessen äquidistante Stücke zu schneiden, also nach timestamp DIV $packageSize zu gruppieren? und den entsprechenden Timestamp im Select hochzuzählen? Das Ganze noch mit IFNULL Statements ergänzt sollten wir in der Lage sein, fehlende (Null-)Werte zu ergänzen. Performance to be tested. Dann besteht natürlich wieder die Gefahr, dass wir zwischen zwei Zählerwerten eine Null erfinden falls sich da kein weiterer Messwert anfindet- Tuples darf also nicht granularer werden als Messwerte wirklich vorliegen. Wär hätte Lust einen Prototyp zu bauen und Performance zu testen?? vg Andreas