Es gibt aber unter "/usr/local/bin" auch ein Skript "aggregate-samples-manual.sh", welches die gleiche Funktionalität beinhaltet. Das könntest Du nutzen.
Ich habe mir das Skript /usr/local/bin/aggregate-samples-manual.sh angeschaut.
Die SQL-Statements darin habe ich erst mal direkt in der Datenbank ausgeführt.
Und auch nur für Daten älter als 01.01.2021. p4d läuft bei mir seit ca. Juli 2020.
Also hätte es ca. 6 Monate betroffen.
Aber es kam ein Fehler, weil die Partition zu klein war und die MariaDB keinen Platz hatte, um tmp-Daten zu erstellen.
Also wurde die Partition vergrößert, jetzt sind 6 GB frei.
Nun habe ich den Zeitbereich erst mal verkleinert auf 6 Stunden von 09.09.2020 12:00 Uhr bis 09.09.2020 18:00 Uhr
time > "2020-09-09 12:00:00"
time < "2020-09-09 18:00:00"
Hier vorab mein Fazit:
Die Aggregate-Funktion in der Datei /usr/local/bin/aggregate-samples-manual.sh scheint nicht zu funktionieren.
Ausführliche Beschreibung ab hier.
Das Ergebnis aller SQL-Statements ist zusätzlich in der separaten Datei "p4d_Aggregate_samples_Ergebnis.sql" zu sehen.
Es wurden folgende SQL-Statement ausgeführt.
1. SQL-Statement
Vor Aggregate ermitteln, wie viele Datensätze der Außentemperatur für den Zeitraum vorhanden sind.
Ergebnis sind 240 Datensätze Außentemperatur.
select * from samples
where address = 4 and type = "VA"
and time > "2020-09-09 12:00:00"
and time < "2020-09-09 18:00:00"
order by time asc;
240 rows in set (0,005 sec)
2. SQL-Statement
Datensätze für Aggregate ermitteln und mit aggregate='A' markieren.
replace into samples
select address, type, 'A' as aggregate,
CONCAT(DATE(time), ' ', SEC_TO_TIME((TIME_TO_SEC(time) DIV 15) * 15)) + INTERVAL 15 MINUTE time,
unix_timestamp(sysdate()) as inssp, unix_timestamp(sysdate()) as updsp,
round(sum(value)/count(*), 2) as value, text, count(*) samples
from samples
where aggregate != 'A'
and time > "2020-09-09 12:00:00"
and time < "2020-09-09 18:00:00"
group by CONCAT(DATE(time), ' ', SEC_TO_TIME((TIME_TO_SEC(time) DIV 15) * 15)) + INTERVAL 15 MINUTE, address, type;
Query OK, 11040 rows affected (0,705 sec)
Records: 11040 Duplicates: 0 Warnings: 0
Display More
3. SQL-Statement
Nach dem Markieren der Datensätze für Aggregate ermitteln, wie viele Datensätze der Außentemperatur für den Zeitraum vorhanden sind.
Ergebnis sind plötzlich 470 Datensätze Außentemperatur.
select * from samples
where address = 4 and type = "VA"
and time > "2020-09-09 12:00:00"
and time < "2020-09-09 18:00:00"
order by time asc;
470 rows in set (0,005 sec)
4. SQL-Statement
Datensätze löschen, die nicht für Aggregate benötigt werden.
Bedingung: aggregate != 'A'
delete from samples
where aggregate != 'A'
and time > "2020-09-09 12:00:00"
and time < "2020-09-09 18:00:00";
Query OK, 11040 rows affected (0,568 sec)
5. SQL-Statement
Nach Aggregate ermitteln, wie viele Datensätze der Außentemperatur für den Zeitraum vorhanden sind.
Ergebnis sind 230 Datensätze Außentemperatur.
Es wurden also nur 10 Datensätze innerhalb von 6 Stunden gelöscht.
Das ist sicher viel zu wenig.
select * from samples
where address = 4 and type = "VA"
and time > "2020-09-09 12:00:00"
and time < "2020-09-09 18:00:00"
order by time asc;
230 rows in set (0,002 sec)