<div dir="ltr"><div>Danke Manfred, jetzt habe ich auch das Problem verstanden. Deine Erklärung ist plausibel. Es hat zwar nur 4 Jahre gedauert, aber besser als nie. ;-)</div><div>Gruß René<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Mo., 24. Apr. 2023 um 20:20 Uhr schrieb mh <<a href="mailto:mh.er@arcor.de">mh.er@arcor.de</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
Hallo Micha,<br>
<br>
das Problem entsteht dadurch, dass du einen Datenwert exakt bei der
vollen Minute <span>(Sonntag,
23.04.2023, 22:15Uhr) hast, und das aggregate Script für diesen
Zeitpunkt den nächsten Wert der aggregate Tabelle berechnen will.<br>
<br>
In der SQL Anweisung </span><br>
<span><br>
COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) -
MIN(agg.prev_timestamp)),<br>
<br>
ist dann </span><span><span>(MAX(agg.timestamp) </span>=
</span><span><span>MIN(agg.prev_timestamp), was
zur Division durch Null führt. <br>
Das Problem tritt übrigens nur auf, weil es nur einen Datenwert
in diesem Minutenslot gibt.<br>
(ich hatte das schon am 24.3. mal geschrieben - zugegebenermaßen
etwas schwer verständlich formuliert).<br>
<br>
Ich habe beim Check meiner Datenbank übrigens das gleiche
Problem entdeckt, das da seit Anfang Januar "schlummert".<br>
<br>
Hier mal zwei Screenshots aus HeidiSQL, einmal die Daten zum
kritischen Zeitpunkt<br>
<br>
<br>
<img src="cid:187b4f248a5e7e7311e1"><br>
<br>
und die zugehörige aggregate Tabelle, die am 2023-01-02 15:09:53
abbricht, weil der Wert für 15:10 immer wieder zur Division
durch 0 führt, <br>
weil kein weiterer Datenwert im Zeitslot für 15:10 existiert
(sonder erst um 15:11:37).<br>
<br>
<img src="cid:187b4f248a557b7e6272"><br>
<br>
Du kannst die SQL Kommandos modifiziert für channel_id und
Zeitpunkt bei dir mal ausprobieren, und solltest etwas ähnliches
finden.<br>
<br>
Es gibt zwei Abhilfen:<br>
a. du kannst die aggregate Tabelle für den Kanal neu rechnen
lassen, dann kommt das Skript "über" die kritische Stelle<br>
b. du kannst den Zeitstempel des Datenwertes modifizieren, z.b.
ein Sekunde dazugeben.<br>
<br>
zu b.:<br>
Wenn du HeidiSQL verwendest, geht das einfach durch Ändern der
entsprechenden Zelle.<br>
<br>
In mysql geht das mit folgendem Befehl:<br>
<br>
REPLACE INTO volkszaehler.data (channel_id,timestamp,value)
VALUES (3, </span></span><span><span><span>1682280901000 </span>,
<dein value>)<br>
<br>
Falls du mit SQL nicht vertraut bist:<br>
Den Wert von <dein value> kannst du mit dem Kommando<br>
<br>
SELECT * FROM </span></span><span><span><span><span>volkszaehler.data</span></span>
WHERE channel_id=3 AND timestamp= </span></span><span><span><span></span><span><span><span>1682280900000<br>
<br>
herausfinden.<br>
<br>
Ich werde einen issue aufmachen, um einen fix im Script zu
addressieren.<br>
<br>
Gruss<br>
Manfred<br>
<br>
<br>
<br>
</span></span></span></span></span>
<div>Am 24.04.2023 um 17:07 schrieb
<a href="mailto:hartmann-micha@web.de" target="_blank">hartmann-micha@web.de</a>:<br>
</div>
<blockquote type="cite">
<div>
<p class="MsoNormal"><span>Hallo
Jens, <u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>erwartungsgemäß
ist das Problem wieder da! Die Aggregation die ich nun alle
15min nur noch auf ausgewählte Kanäle laufen lasse schlägt
wieder fehl.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Ich
habe dein SQL-Statement ausgeführt und hänge die CSV-Datei
hier an.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Hier
sehe ich mit Timestamp 1682280900000 (Sonntag, 23.04.2023,
22:15Uhr) Nullwerte. Das passt da ich erstmalig 22:30Uhr die
Fehlermeldung bekomme.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Wie
muss ich das nun interpretieren. Dabei brauche ich
Unterstützung!<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Viele
Grüße<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Micha<u></u><u></u></span></p>
<div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b>Von:</b> Jens Scheidtmann
<a href="mailto:jens.scheidtmann@gmail.com" target="_blank"><jens.scheidtmann@gmail.com></a> <br>
<b>Gesendet:</b> Samstag, 25. März 2023 14:30<br>
<b>An:</b> Michael Hartmann <a href="mailto:hartmann-micha@web.de" target="_blank"><hartmann-micha@web.de></a>;
<a href="http://volkszaehler.org" target="_blank">volkszaehler.org</a> - users
<a href="mailto:volkszaehler-users@demo.volkszaehler.org" target="_blank"><volkszaehler-users@demo.volkszaehler.org></a><br>
<b>Betreff:</b> Re: [vz-users] Aggregation (minute) schlägt
fehl<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Hallo Micha,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">die Statements sollen im Fehlerfall die
Tabellenzeilen finden, die zum Fehler führen. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Ohne Fehler gibt es keine 0-Zeilen.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Wenn es jetzt nicht mehr auftritt, dann
war die Drohung ausreichend. <span style="font-family:"Segoe UI Emoji",sans-serif">😉</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Jens <u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Michael Hartmann <<a href="mailto:hartmann-micha@web.de" target="_blank">hartmann-micha@web.de</a>>
schrieb am Sa. 25. März 2023 um 12:40:<u></u><u></u></p>
</div>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">Hallo Jens,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">ich habe das erste SQL-Statement
ausgeführt und hänge das CSV hier an.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">Einen Nullwert kann ich da nicht
ausmachen. Auch scheint mir die Ausgabe nicht so zu sein wie
gewünscht/erwartet? Die Frage ist auch, ob der Ansatz so
funktioniert, da ich die Aggregationstabelle ja neu
aufgebaut habe und das minütliche Aggregieren aktuell
fehlerfrei ist.</span><u></u><u></u></p>
<p class="MsoNormal" style="background-color:rgba(0,0,0,0)"><span style="color:rgb(31,73,125)">[…]</span><u></u><u></u></p>
</div>
</blockquote>
<br>
</div>
</blockquote></div>