Manipulation / Anpassung der Daten in der InfluxDB

Von Zeit zu Zeit kann es immer mal vorkommen, dass man Daten in der Datenbank verändern muss. Zum könnte man fehlerhafte Daten in die Datenbank geschrieben haben oder man will die Struktur der Datenbank an aktuelle Erfordernisse anpassen. Ganz so leicht wie z.B. bei einer MYSQL Datenbank mit PHPmyAdmin ist das Ganze leider nicht. Der hier beschriebene Weg ist natürlich nur einer der von vielen, ist aber aus meiner Sicht einfach zu bewerkstelligen.


Backup erstellen

Vor den anstehenden Schritten bitte unbedingt ein Backup der Daten erzeugen. Eine kurze Anleitung dazu findest du in der Installationsanleitung


Benutzer csv anlegen und Rechte vergeben


Da das Passwort für die Datenbank gleich über die Console eingegeben werden muss habe ich mir einen Benutzer "csv" mit dem Passwort "csv"

angelegt dem ich nur für den Export & Import Rechte gebe


influx starten:

Code
influx


als Admin anmelden:

Code
auth


User csv mit dem Passwort csv anlegen:

Code
CREATE USER csv WITH PASSWORD 'csv'


Rechte vergeben:

Code
GRANT ALL ON "fronius" TO "csv"


Influx Console beenden:

Code
exit


Export der .csv Daten


Export der Daten aus dem Measurement "historical" in eine .csv Datei:


Code
influx -username csv -password "csv" -database 'fronius' -host 'localhost' -execute 'SELECT * FROM historical' -format 'csv' -precision='rfc3339'> /home/pi/export_original.csv


wollt ihr andere Daten exportieren müsst ihr nur den execute Befehl anpassen


Kopieren der .csv Datei auf den PC

hier nutze ich WINSCP: https://winscp.net/eng/download.php

hier werden die gleichen Verbindungsdaten wie mit putty genutzt


Manipulieren / Anpassen der .csv Daten

Für diese Arbeiten nutze ich CSVed: https://csved.sjfrancke.nl/index.html

Es geht natürlich auch mit anderen Tools aber mit diesem habe ich gute Erfahrungen gemacht.

Anpassen des Zeitformates

Das Zeitvormat der exportierten Daten entspricht leider nicht dem Format welches ihr für den Import benötigt.

Das Problem sind die Sekunden die als zwei Ziffern importiert werden müssen jedoch viel genauer exportiert werden.

Um die Stellen nach dem Punkt abzuschneiden habe ich die nicht benötigten Zeichen erst mit der Funktion "Join and Split - Split Column @ Text" mit der Einstellung "Column 2", "Split bevor Text", "Split from End" und Search Text "." in eine separate Spalte verschoben

Diese neue Spalte habe ich dann gelöscht

Anpassungen an den Daten


hier könnt ihr die Daten mit dem Tool eurer Wahl beliebig verändern



Import der angepassten .csv Datei


den Import könnt ihr mit dem Python Import Skript csv_to_influx.py auf Github erledigen


Hier ein Besipiel meines Imports. Weitere Hilfe zur Bedienung findet ihr auf der Github Seite


Code
python csv_to_influx.py -i export_angepasst_sauber.csv -u csv -p csv --dbname fronius -m import -tc time --fieldcolumns E_Grid_Exported_1M,E_Grid_Exported_24h,E_Grid_Exported_Daily,E_Grid_Exported_Monthly,E_Grid_Imported_1M,E_Grid_Imported_24h,E_Grid_Imported_Daily,E_Grid_Imported_Monthly,E_PV_AC_1M,E_PV_AC_24h,E_PV_AC_Daily,E_PV_AC_Monthly,E_PV_AC_Self_Consumption_Daily,E_PV_AC_Self_Consumption_Monthly,P_GRID_Self_Sufficiency_Daily,P_GRID_Self_Sufficiency_Monthly,P_PV_AC_Self_Consumption_Daily,P_PV_AC_Self_Consumption_Monthly -tf %Y-%m-%dT%H:%M:%S --tagcolumns ""


Um die Daten vor dem eigentichen Import noch einmal mit Grafana zu Überprüfen habe ich diese erst ins neue Measurment "import" importiert, mit Grafana kontrolliert und danach erst das in der Datenbank anzupassende Measurement sowie das Test Measurement gelöscht. Mit folgendem Befehl könnt ihr in Influx ein Measurement löschen

Code
drop measurement import


Zum Schluss solltet ihr noch die Nutzerrechte des Nutzers csv einschränken:

Code
REVOKE ALL ON fronius FROM csv



Überprüfen könnt ihr den Schritt mit

Code
SHOW GRANTS FOR csv


Die Ausgabe sollte dieser ähneln:

Code
database privilege
-------- ---------
import ALL PRIVILEGES
fronius NO PRIVILEGES

Wechselrichter:

Fronius Symo 6.0-3-M


Verschaltung/Module:

MPPT1:
Hausdach 50 Grad Neigung, 185 Grad Süd: 7 * Axitec AXIworldpremium X HC BLK 400 Wp

MPPT2 (Serielle Verschaltung):

Garagendach 45 Grad Neigung, 95Grad Ost: 5 * Axitec AXIworldpremium X HC BLK 400 Wp

Garagendach 45 Grad Neigung, 275Grad West: 5 * Axitec AXIworldpremium X HC BLK 400 Wp mit Tigo TS4-R-O

Datenlogger mit Node-Red InfluxDB und Grafana