NEWS
Werte der influxDB als Excel ausleiten
-
@dp20eic
Hallo Bernd,
ich habe da noch mal eine Infux DB Frage an dich.
Mit hat es heute eine Messung bei meinem Stromzähler rein gehauen mit über 10.000 Watt und zwar am 14.03.2023 um 09:24:00.
Ich kann zwar ganze Datensätze löschen mit:
influx delete --bucket iobroker-data --start 1970-01-01T00:00:00Z --stop $(date +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="DATENPUNKT-HIER-REIN"'
aber wie muß der Befehl aussehen um nur en einen fehlerhaften Messpunkt zu löschen oder zu korrigieren mit einem Durchschnittswert?
Hatte das mal gefunden aber finde es nicht mehr.
Kannst du mir da bitte noch mal helfen?
Gruß Duffy
-
@duffy sagte in Werte der influxDB als Excel ausleiten:
Kannst du mir da bitte noch mal helfen?
Moin,
ich versuch’ es mal.
!!!Achtung!!!
Wie immer, ein Backup zuhaben ist besser, als eins zu brauchen
Also lieber eines mehr machen-
Damit das nicht wieder passiert, sollte man erst einmal schauen, was im zu loggenden DP steht und dann evtl. dort werte die Größer als sind nicht Loggen.
-
eine Methode Werte zu änder wäre, den Wert als CSV zu exportieren, dann ändern und wieder laden.
- das geht aber leider nicht mehr mit der aktuellen Web-UI, welche Version von
influxDB
ist bei Dir installiert?
- das geht aber leider nicht mehr mit der aktuellen Web-UI, welche Version von
-
Dein delete Statement passt schon, Du musst nur die
Start
undStop
Zeit genau auf den einen Wert einstellen.
Wenn Du schaust, dass Du nur diesen einen Wert erwischst, dann sollte das mit dem Löschen klappen. -
Ich versuche mal einen Task zu schreiben, wie man den einen Wert ändern kann.
VG
Bernd -
-
@dp20eic
Hi Bernd,
danke für deine schnelle Antwort.
Nun habe ich doch noch einen Datenpunkt gefunden der in Frage kommen könnte.
Nur hat der in dem Zeitraum nur 5325,5 Watt und nicht wie in der Grafik (mein Post zuvor) 10.78KJetzt habe ich etwas weiter versucht an mehr Details zu kommen und schon ist der Wert weg und ich finde ihn nicht mehr. Ich weis nicht woran es liegt aber mal ist mehr Zeit zwischen den Werten und mal weniger; also was ich sagen will, die Datendichte der einzelnen Werte hinterinander ist unterschiedlich, mal alle paar Sek. mal nur Min. dann wieder Std. Abstände. Ich weis nicht wovon das abhängt.
Was noch komisch ist, ich will es mal in Bildern veruchen zu zeigen:
Darstellung in Influx DB
Darstellung in Grafana:
Hier sind sogar die Werte (W) an sich unterschiedlich und auch die Zeit geringfügig anders.
Also wirklich verstehen tue ich das nicht das Daten in Influx DB 5326 und in Grafana 32628 sind und vor allem war es im ersten Screenshot von Infux DB ja noch 10780 Watt.Aber gut das würde ja vielleicht verschwinden wenn ich den Datenpunkt löschen könnte.
Da ich ja schon die Werte von dem Datenpunkt als Screenshot hatte habe ich die mal eingetippt:
Komme jetzt aber damit nicht weiter.
Sehe schon das läuft auf eine Löschung des ganzen Datenpunkts heraus
Gruß Duffy
Edit:
Habe den Datenpunkt noch mal gefunden dafür sieht er jetzt anders aus (die start und stop Zeit) -
@duffy sagte in Werte der influxDB als Excel ausleiten:
Sehe schon das läuft auf eine Löschung des ganzen Datenpunkts heraus
Moin,
erst mal langsam und tief Luft holen.
Zu Deinen Grafiken, ohne die Abfragen dahinter, kann man da nicht viel machen, dann muss ich erst mal verstehen, um welche Daten es sich handelt, bei meinem Stromzähler gibt es zwei Datenpunkte
sonoff.0.DVES_8AA766.SENSOR.SML.akt_w <- der aktuelle Verbrauch sonoff.0.DVES_8AA766.SENSOR.SML.total_kwh <- der gesamte Verbrauch seit
Wenn es sich um aktuelle Werte handelt, kann es nicht sein, dass Du einen Verbraucher eingeschaltet hast?
Dann hast Du meine beiden Bilder nicht richtig angeschaut im ersten war die
range (start: v.time....
, damit bekam ich drei Werte, das zweite Bild war dann genau 15 Minuten vor und 15 Minuten nach der Meldezeit eingestellt.Dein Wert von ~5000 war heute um 7:24 Zulu Zeit, das ist 9:24 in Deutschland
Hier mal ein anderes Beispiel:
from(bucket: "iobroker_strom") |> range(start: 2023-06-14T13:35:00Z, stop: 2023-06-14T13:40:00Z ) |> filter(fn: (r) => r["_measurement"] == "sonoff.0.DVES_8AA766.SENSOR.SML.akt_w") |> filter(fn: (r) => r["_field"] == "value") //|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false) |> yield(name: "last")
Wenn Du Deinen Wert gefunden hast, dann kannst Du ihn auch genau mit dieser Eingrenzung, mittels delete löschen.
influx delete --bucket iobroker-data --start
hier_zeitpunktanfang
--stopzeitpunktende
--predicate '_measurement="Stromzähler"'Er findet in diesem Zeitraum ja nur den einen Wert und löscht dann auch nur den und nicht das ganze Bucket.
Ich kann das aber erst morgen mal testen.
VG
Bernd -
Hallo Bernd,
ich versuche hier mal Antworten zu geben:
"Zu Deinen Grafiken, ohne die Abfragen dahinter, kann man da nicht viel machen, dann muss ich erst mal verstehen, um welche Daten es sich handelt, bei meinem Stromzähler gibt es zwei Datenpunkte"
Es ist der Datenpunkt in bei dem der aktuelle Verbauch angezeigt wird.
++++++++++++++++++++
"Wenn es sich um aktuelle Werte handelt, kann es nicht sein, dass Du einen Verbraucher eingeschaltet hast?"
Nein, es war von 6:45 - 11:30 keiner Zuhause und keine Verbraucher mit so hoher Leistung an)
++++++++++++++++++++++
"Dann hast Du meine beiden Bilder nicht richtig angeschaut im ersten war die range (start: v.time...., damit bekam ich drei Werte, das zweite Bild war dann genau 15 Minuten vor und 15 Minuten nach der Meldezeit eingestellt."
Doch das habe ich aber bei mir kamen da keine Daten raus.
Jetzt habe ich es noch einmal versucht:Sowohl mit 7:24 und 9:24 aber der Wert kam nicht (Denke mal das Z steht für Zulu?)
Immerhin kamen jetzt die 3 Werte.
+++++++++++++++++++++++++++++
"Wenn Du Deinen Wert gefunden hast, dann kannst Du ihn auch genau mit dieser Eingrenzung, mittels delete löschen.
influx delete --bucket iobroker-data --start hier_zeitpunktanfang --stop zeitpunktende --predicate '_measurement="Stromzähler"'
Er findet in diesem Zeitraum ja nur den einen Wert und löscht dann auch nur den und nicht das ganze Bucket.
Ich kann das aber erst morgen mal testen."
Ich werde den Wert noch mal versuchen zu finden und dann noch mal warten bis du es getestet hast.
Was hat das mit dem Screenshot von dir auf sich?
Ich sehe du hast da vermutlich was eingefügt //> aggregat .............Edit:
Habe gerade noch mal den Punkt gesucht und gefunden:
Dann den Wert so wie gezeigt eingegeben:
und auch das haut nicht hin.
Habe es in der Zeile 5 mit//|>
und ohne probiert.
Das interessante ist ja auch das die Werte Watt und _time gleich sind wie im ersten Screenshot und _start und _stop die Zeit schon wieder anders....... und noch einen zu hohen Wert gefunden im ähnlichen Zeitbereich??.
Der Wert ist vorher nie erschiene, ich glaube das Influx DB will mich in den Wahnsinn treiben
Ich finde hier keine Systematik.Gruß Duffy
-
vergiss mal die _start und _stop Spalten in den Ergebnissen, die sind hier völlig irrelevant. Entscheidend ist die "_time" Spalte. Hier steht der Zeitstempel, zu welchem der Wert aufgezeichnet wurde.
Mit diesem Range solltest du deinen ersten Ausreißer bekommen
|>range (start: 2023-06-14T07:22:00Z, stop: 2023-06-14T07:25:00Z)
Hier fehlt übrigens das "stop:"
-
@duffy sagte in Werte der influxDB als Excel ausleiten:
Habe gerade noch mal den Punkt gesucht und gefunden:
Moin,
zu viele Bilder, da kann man immer so schlecht Kopieren
du musst in die Abfrage mal start: 2023-06-14T07:20:00.000Z und stop: 2023-06-14T07:25:00.000Z eingeben
Z = Zulu Zeit, Greenwich Zeit oder UTC
Für Deutschland kommen dann entweder +1/+2 Stunde(n) draufgerechnetNein alles was in der FLUX Abfrage mit
//
beginnt, ist kommentiert, also wird es ignoriert.Diese zwei Werte
_start
und_stop
das sind die Werte, die Du durch den eingestellten Abfragezeitraum bekommst
Wenn Du um 12 Uhr Mittags sagst, gib mir die letzten 12 Std., dann bekommst Du die Werte von 00:00 Uhr bis 12:00 Uhr, wenn Du aber das Gleiche um 14 Uhr machst, dann bekommst Du natürlich auch andere Werte, denn 14 - 12 ist 2 Uhr Nachts bis 14 Uhr Mittags.
Daher verändern sich die Werte für_start
und_stop
. Nur die dritte Spalte _time ist wichtig, denn das ist der Wert, als das Ereignis geschehen ist.VG
Bernd -
@duffy sagte in Werte der influxDB als Excel ausleiten:
Der Wert ist vorher nie erschiene, ich glaube das Influx DB will mich in den Wahnsinn treiben
Moin,
das ist nicht die
influxDB
die zeigt dir nur das, was da drin ist an.Kannst Du mal die Daten zeigen wie hier im Beispiel
Ich möchte nur mal sehen, ob du vom
Value
mehrere Senderfrom
im Bucket hast.Dann schau mal, ob sich da noch mehr von den angeblichen Ausreißern im Bucket verstecken
from(bucket: "iobroker_strom") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "sonoff.0.DVES_8AA766.SENSOR.SML.akt_w") |> filter(fn: (r) => r["_field"] == "value") //|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) //|> yield(name: "mean") //|> max(column: "_value") |> highestMax(n:10, groupColumns: ["_value"])
VG
Bernd -
Danke marc-berg für den Hinweis auf die "wichtige" Zeit das schafft schon mal etwas Entspannung in der Verwirrung.
So bin ich auf einen hohen Wert gestoßen.Gruß Duffy
-
@dp20eic
Hallo Bernd,
hier der gewünschte Screenshot.
Danke auch für die Erklärung mit der Zeit. Jetzt weis ich dan Eurer Hilfe welches die entscheidende Zeit ist und warum sich die anderen ändern.
Edit:
from(bucket: "iobroker-data") |>range (start: 2023-06-14T07:00:00Z, stop: 2023-06-14T08:00:00Z) |> filter(fn: (r) => r["_measurement"] == "Stromzähler") |> filter(fn: (r) => r["_field"] == "value") //|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) //|> yield(name: "mean") |> highestMax(n:10, groupColumns: ["_value"])
Hab das mal so eingegeben und es kam das heraus:
0 Stromzähler value 65396 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:23:22.950Z 0 Stromzähler value 649 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:20:02.990Z 0 Stromzähler value -70 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:00:03.117Z 0 Stromzähler value -75 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:00:33.017Z 0 Stromzähler value -78 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:00:13.005Z 0 Stromzähler value -79 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:00:23.020Z 0 Stromzähler value -81 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:00:52.997Z 0 Stromzähler value -83 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:01:22.978Z 0 Stromzähler value -123 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:22:03.024Z 0 Stromzähler value -129 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:21:52.986Z
War das so gemeint?
(Allerdings vermisse ich meinen Wert mit 5325,5 der anfänglich gezeigt wurde aber auf den kann ich gut verzichten wenn das der Fehler war, siehe unten)
0 Stromzähler value 65396 2023-06-14T07:00:00.000Z 2023-06-14T08:00:00.000Z 2023-06-14T07:23:22.950Z
Gruß Duffy
-
@duffy sagte in Werte der influxDB als Excel ausleiten:
Allerdings vermisse ich meinen Wert mit 5325,5 der anfänglich gezeigt wurde
Das war kein echter Wert, sondern ein Mittelwert, den du mit "aggregateWindow" + dem Parameter "mean" erzeugt hast.
-
Danke Marc Berg für die Erklärung. Sollte eigentlich nur der jetzige Wert derjenige sein dich ich löschen können müsste.
Gru0 Duffy
-
@duffy sagte in Werte der influxDB als Excel ausleiten:
der jetzige Wert derjenige sein dich ich löschen können müsste.
???
gibt es im Influx-Adapter nicht die Möglichkeit einzelne Werte in der Historie zu bearbeiten oder zu löschen?
-
Meinem Erkenntnisstand soll das nur über Befehle in der Konsole gehen.
Ach, warum muss das so kompliziert sein
Aber noch bleibe ich dank eurer Hilfe dran -
@homoran sagte in Werte der influxDB als Excel ausleiten:
gibt es im Influx-Adapter nicht die Möglichkeit einzelne Werte in der Historie zu bearbeiten oder zu löschen?
Leider für die InfluxDB 2.x noch nicht. Sollte aber im nächsten Release (latest) drin sein.
-
IIch habe versucht das mit den 5325,5 nachzustellen und habe das mit dem "aggregateWindow" + dem Parameter "mean" deaktiviert und es kommt immenoch die 65396.
from(bucket: "iobroker-data") |>range (start: 2023-06-14T07:22:00Z, stop: 2023-06-14T07:25:00Z) |> filter(fn: (r) => r["_measurement"] == "Stromzähler") |> filter(fn: (r) => r["_field"] == "value") //|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
Gruß Duffy
-
@duffy sagte in Werte der influxDB als Excel ausleiten:
warum muss das so kompliziert sein
ist es das?
influx ist eben nicht ioBroker. Und Datenbankensprachen sind ziemlich komplex, da damit viel abgebildet werden muss.@duffy sagte in Werte der influxDB als Excel ausleiten:
Meinem Erkenntnisstand soll das nur über Befehle in der Konsole gehen.
was soll ich damit anfangen?
in dem history Adapter geht das ganz einfach
ich kann mir nicht vorstellen dass es mit dem InfluxDB-Adapter nicht geht. ich nutze allerdings kein Influx.
-
@marc-berg sagte in Werte der influxDB als Excel ausleiten:
@homoran sagte in Werte der influxDB als Excel ausleiten:
gibt es im Influx-Adapter nicht die Möglichkeit einzelne Werte in der Historie zu bearbeiten oder zu löschen?
Leider für die InfluxDB 2.x noch nicht. Sollte aber im nächsten Release (latest) drin sein.
Danke für diese Info.
-
@duffy sagte in Werte der influxDB als Excel ausleiten:
IIch habe versucht das mit den 5325,5 nachzustellen und habe das mit dem "aggregateWindow" + dem Parameter "mean" deaktiviert und es kommt immenoch die 65396.
Moin,
nach der Erklärung von @Marc-Berg und deinen eigenen Ermittlungen ist das dann der einzige falsche Wert in der Datenbank.
Du hast in deiner Abfrage von oben den Zeitraum
range
nicht groß genug gewählt, damit hast du nur den einen gefunden, der in derrange
14.06.2023 7 Uhr UTC bis 14.06.2023 8 Uhr UTC auftauchte, aber nicht, ob du noch weitere Ausreißen in der Bucket hast
Wenn du die Abfrage von unten nimmst, dann sollten dir evtl. weitere ins Netz gehen.from(bucket: "iobroker-data") |>range (start: 1970-01-01T00:00:00Z, stop: now()) // das nimmt alle Daten aus dem Bucket von 1970 bis zur aktuennen Uhrzeit |> filter(fn: (r) => r["_measurement"] == "Stromzähler") |> filter(fn: (r) => r["_field"] == "value") |> highestMax(n:10, groupColumns: ["_value"]) // mit n:10 werden dir die 10 Höchsten Werte angezeigt //|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) //|> yield(name: "mean")
Jetzt, weißt du auch, warum ich das
aggregate
u.yeald
kommentiert//
habeDen/die gefundenen Werte kannst du dann einzeln, mittels
delete
löschen.
Ich würde mir dann nochmal den Datenpunkt, den du in die InfluxDB schreibst, anschauen und dort einen logischen max. Wert eintragen, damit es nicht wieder solche Ausreißer gibt.
Beispiel:
Ich habe da mal einen Wert von 6000 eingetragen, denn mein höchster Wert war ~5200, das hängt natürlich von deinen Werten ab.
VG
Bernd -
@dp20eic
Guten Abend Bernd,
Ich habe deine o.g. Daten einmal in influxDB eingetragen. Es scheint sich um den einzigsten Ausreißer zu handeln. Die restlichen Maximalwerte liegen um die 6700 was ungünstigerweise schon sein kann. Habe den Wert mal auf 7000 gesetzt.
(Sollten da einmal 7100 dürber liegen ist das auch egal)"Den/die gefundenen Werte kannst du dann einzeln, mittels delete löschen."
da ist es wieder mein Ursprungsproblem, wie mit delete löschen
"influx delete --bucket iobroker-data --start hier_zeitpunktanfang --stop zeitpunktende --predicate '_measurement="Stromzähler"'"
Sorry habe gerade versucht da was rein zu schreiben aber das wird nix da kommen mehr Fragen als Lösungen raus.
0 Stromzähler value 65396 0 2023-06-15T17:00:25.022Z 2023-06-14T07:23:22.950Z
Wie würde das dann für die Konsole so aussehen?
"influx delete --bucket iobroker-data --start 2023-06-14T07:23:22.950Z --stop 2023-06-14T07:23:22.950Z --predicate '_measurement="Stromzähler"'"
Edit:
Nein, habe es versucht ging nicht.
pi@raspberrypi:~ $ "influx delete --bucket iobroker-data --start 2023-06-14T07:23:22.950Z --stop 2023-06-14T07:23:22.950Z --predicate '_measurement="Stromzähler"'" -bash: influx delete --bucket iobroker-data --start 2023-06-14T07:23:22.950Z --stop 2023-06-14T07:23:22.950Z --predicate '_measurement=Stromzähler': command not found
VG Duffy