DBLog - Historische Werte ausdünnen

Begonnen von C0mmanda, 14 September 2015, 18:38:21

Vorheriges Thema - Nächstes Thema

Sailor

Ein herzerfrischendes "Moin" vom "hinternDeich" vorweg!

Eine Frage an die SQL - Hacks in dieser Runde:

Wie lautet der Befehl in der mySQL - Konsole des RasPi, wenn von dem Device "myGasCalculator" alle DbLog - Werte des Readings "CH_GasCounter_counters.A_FinanceReserve" gelöscht werden sollen deren Wert größer als 600 oder kleiner als 300 sind?

Wie kann ich hinterher die Werte auch wirklich "purgen"?

Danke für Eure Hilfe... Bin absolut nicht SQL-bewandert!

Gruß
    Sailor
******************************
Man wird immer besser...

AHA1805

Hallo Sailer

Ich hoffe ich habe es richtig verstanden.

Anzeige die Anzahl der Datensätze die gelöscht werden sollen

Select count(*)  from history where device = 'CH_GasCounter_counters.A_FinanceReserve' and (value > 600 or value < 300);

Anschließend zum Löschen
delete from history where device = 'CH_GasCounter_counters.A_FinanceReserve' and (value > 600 or value < 300);

Das kannst du in DBLog bei userCommand eingeben.

Aber bitte vorher erst mal nur den Select testen wieviel Einträge anschließend gelöscht werden.

Ergebnis steht in den Reading userCommandResult

Ich habe so etwas ähnliches schon öfters auf meine SQLite DBLog angewendet.

Kann leider im Moment nur via TapaTalk antworten

Gruß Hannes

Gesendet von meinem SM-T715 mit Tapatalk

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

Sailor

#167
Hallo Hannes

Zitat von: AHA1805 am 25 Januar 2016, 22:32:35
Ich hoffe ich habe es richtig verstanden.

Hast Du!

Ich probiere es aus und gebe Rückmeldung! Danke

Gruß
    Sailor

Nachtrag: Mit "reading" statt "device" hat es geklappt! Danke!
******************************
Man wird immer besser...

AHA1805

Zitat von: Sailor am 26 Januar 2016, 06:19:17
Hallo Hannes

Hast Du!

Ich probiere es aus und gebe Rückmeldung! Danke

Gruß
    Sailor

Nachtrag: Mit "reading" statt "device" hat es geklappt! Danke!
Hallo Sailer,

sorry hab ich oben nicht richtig gelesen.

Aber Hauptsache du bist ans Ziel gekommen.

Gruß Hannes

Gesendet von meinem SM-T715 mit Tapatalk

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

ironalf

Hallo CLauidu,

Erst mal ein Danke für die Arbeit. Ich denke dass ich meine auf mittlerweile 16G angewachsene Datenbank doch erheblich reduzieren kann.

Ich benutze eine PostgreSQL  Datenbank und damit mir ist  ein Fehler in dem Modul aufgefallen.
Nachdem ich die Zeile 1337 geändert habe funktioniert es(habe aber nur geringe Programmierkenntnisse)


  elsif ($hash->{DBMODEL} eq 'POSTGRESQL') { $cmd = "NOW() - INTERVAL '$a[2] DAY"; }
  elsif ($hash->{DBMODEL} eq 'POSTGRESQL') { $cmd = "NOW() - INTERVAL '$a[2]' DAY"; }

 
Gruß Alfons

rapster

Hallo Alfons,

danke für den Hinweis, habs gefixt und eingecheckt.

Gruß
Claudiu

ironalf

Hallo CLauidu,

Habe gerade gesehen dass in der Zeile 1574 der gleiche Fehler ist.

Gruß Alfons

rapster

richtig, danke, habs ebenfalls gefixt und eingecheckt.
Von der Stelle hatte ich es für reduceLog kopiert gehabt :-)

Allerdings habe ich reduceLog selber noch nie unter PostgreSQL getestet, hoffe dass sonst alles passt ;)

Gruß
Claudiu

ironalf

Danke, werde es später testen und mich melden wenn ich noch Probleme habe.

Gruß Alfons

stromer-12

in Zeile 1884 fehlt ein ; am Zeilenende.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Amenophis86

Ich habe von mysql leider nicht so viel Ahnung und würde nun gerne mittels reduceLog meine Datenbank reduzieren. Wie kann ich feststellen, oder dieser "Search_Idx" vorhanden ist?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

dev0

z.B. mit mysql command line tool:

mysql -u <user> -p
use <db>
SHOW INDEX FROM <table>;

Amenophis86

Das habe ich gemacht und das Ergebnis sieht wie auf dem Bild aus. Ich sehe, dass bei Device und Reading ein Yes für Search_Idx steht, bei Timestamp aber kein Yes. Ist das so richtig und kann ich damit den reduce Befehl ausführen, oder müsste bei Timestamp auch ein Yes stehen?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

ernst1024

sieht bei mir genau so aus. Ich habe keine Probleme mit reduceLog. Ich glaube du beziehst dich auf die Stelle wo es heisst dass ohne den entsprechenden Index die Sache ewig dauert und dass fhem während dieser Zeit brach liegt?

Kleiner Tip: mache das ganze nochmal mit putty als Vollbild, dann sieht das viel übersichtlicher aus.
Gruß Ernst

Amenophis86

Beziehe mich auf die CommandRef, wo folgendes steht:

ZitatACHTUNG: Es wird dringend empfohlen zu überprüfen ob der standard INDEX 'Search_Idx' in der Tabelle 'history' existiert!

Daher wollte ich es vorher klären :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...