Aggregation min-max

Moin Moin,

kann mir jemand sagen, warum eine jährliche (4) „AC_GetAggregatedValues“ plötzlich keine Min/Max Werte mehr liefert. Funktionierte bisher Einwandfrei… Das Array ist leer obwohl im Archiv die Werte (ab März) da sind. Habe nix verändert. Monatlich (3) geht…

$werte = AC_GetAggregatedValues(48521, 56220, 4, /* Jährlich */ strtotime(„first day of this year 00:00:00“), strtotime(„last day of this year 23:59:59“), 0);

Ggf. habe ich ja was verpasst.

Gruß Michael

Das sollte eigentlich genau so funktionieren. Probier sonst mal die Variable zu reaggregieren. Vielleicht ist die Aggregation ja kaputt und daher wird die aktuelle Stufe nicht berechnet?

Reaggregieren bringt leider nix.

so sieht es bei mtl. Aggregation (3) aus. Das Array ist entsprechend gefüllt.

und so bei jährlicher Aggregation (4). Das Array ist leer. (wie gesagt, lief immer, bis irgendwann…)

Gruß Michael

Kann der Graph denn den Jahreswert anzeigen, wenn du auf „Dekade“ klickst?

paresy

Es gibt keinen Graph. Ich frage einfach nur die min/max ab und schreib sie eine Variable.

Für jede geloggte Variable kannst du im WebFront einen Graph öffnen. Magst du da noch mal schauen?

paresy

ja, das weiß ich schon… :wink: Der Graph ist aber leer.

hier auch noch mal das script was ich mir gebaut habe… wie gesagt, das Array ist bei „4“ „plötzlich“ leer. „3“ geht.

Gruß Michael

Das ist doch aber ein wichtiges Ergebnis !? Wenn auch der Graph keine Daten anzeigt, dann passt dies zur Fehlermeldung in deinem Script. Dann würde ich mal in die entsprechende Datei schauen und ggf eine Neuerstellung erzwingen durch Löschen und neue Aggregation.

Nachtrag: Ich bekomme auch ein leeres Array, wenn ich diese Abfrage bei mir verwende.

Ist die Abfrage mit jährlicher Aggregation so wirklich richtig, bei diesem Datumsbereich? Der letzte Zeitstempel der Jahresaggregation ist bei mir der 31.12.2021, daher ist erklärlich warum die Abfrage eines späteren Zeitraums kein Ergebnis liefert.

Ich vermute dass die Aggregationsstufe Monat hier schon richtig wäre und dieses Script mit Aggregation Jahr noch nie funktioniert hat.

Also, das Ganze hat über Monate (März) hin mit der jährlichen Aggregation wunderbar funktioniert. Erst plötzlich war das Array leer.

Gruß Michael

Ergänzung: habe es nun so gemacht und es funktioniert. Warum weiß nur der Himmel… :smiling_face_with_tear:

… x4, /* Jährlich */ strtotime(„first day of January“), strtotime(„last day of this year 23:59:59“), 0);

strtotime() liefert für die Ausdrücke „first day of this year“ und „last day of this year“ einen Timestamp für den ersten bzw. letzen Tag des aktuellen Monats. Das funktioniert dann natürlich nicht. Der zweite Ausdruck ist bei deiner Abfrage ja nicht weiter schlimm. Ob letzter Tag des Jahres oder letzter Tag des aktuellen Monats läuft in dem Fall aufs gleiche Ergebnis hinaus.

Warum sich die Funktion so verhält, keine Ahnung… Vielleicht ein Bug oder das Konstrukt geht einfach nicht?!

Du hast vollkommen recht. Hier ein Beispiel: PHP Sandbox - Execute PHP code online through your browser

Das hier sollte gehen:

<?php

$a = strtotime("first day of january 00:00:00");
$b = strtotime("last day of december 23:59:59");

echo date("d.m.Y H:i:s", $a) . PHP_EOL;
echo date("d.m.Y H:i:s", $b) . PHP_EOL;

paresy

Verständnisfrage: Woher kommen die Daten der Aggregation 4 (jährlich)?

Ich hatte angenommen, dass ich damit die Daten aus der Datei der jährlichen Aggregation auslese. Das ist aber offenbar nicht der Fall, denn die enthält soweit ich es sehen kann nur die Vorjahre. Dennoch funktioniert die Abfrage auch für das aktuelle Jahr - warum eigentlich und wo kommen die Daten her?

Unvollständige Aggregationssätze wie das aktuelle Jahr werden im Speicher gehalten und kontinuierlich aktualisiert. Abgeschlossene werden in die Datei geschrieben und dann entsprechend auch einfach von dort abgefragt.

1 „Gefällt mir“

Danke Euch… mit den Zeilen von Paresy klappt es nun…

Gruß Michael