Variablen für Datumswerte
Moderator: Ulrich
-
- Beiträge: 137
- Registriert: Di 6. Aug 2019, 22:06
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 7 Mal
Variablen für Datumswerte
Hallo,
ich benötige mal eure Hilfe.
Ich möchte weg, von dieser Art der zeitlichen Abgrenzung in den SQL Abfragen
where time >= '2021-01-01T00:00:00Z' and time <= '2021-12-31T00:00:00Z'
Bestimmt gibt es doch eine Möglichkeit Variablen zu definieren, die dann unter Grafana nutzen werden können.
Es wäre doch bestimmt für viele ein Mehrwert, wenn u.a. folgende Variablen zur Verfügung stehen würden.
$Vorjahr, $AktJahr, $Heute, $Gestern, ….
ich benötige mal eure Hilfe.
Ich möchte weg, von dieser Art der zeitlichen Abgrenzung in den SQL Abfragen
where time >= '2021-01-01T00:00:00Z' and time <= '2021-12-31T00:00:00Z'
Bestimmt gibt es doch eine Möglichkeit Variablen zu definieren, die dann unter Grafana nutzen werden können.
Es wäre doch bestimmt für viele ein Mehrwert, wenn u.a. folgende Variablen zur Verfügung stehen würden.
$Vorjahr, $AktJahr, $Heute, $Gestern, ….
Cu Gerd
My Coffee is always #000000!
My Coffee is always #000000!
-
- Beiträge: 1111
- Registriert: Mi 13. Mai 2020, 10:04
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 161 Mal
Re: Variablen für Datumswerte
Dann such mal im Internet und Du wirst feststellen, dass der Wunsch zwar groß ist, aber keine Lösungsmöglichkeiten angeboten werden.
Nebenbei, Deine Jahresabfrage lässt den 31.12.21 aus, geht also nur bis zum 30.12.21 inklusive.
Ich habe angefangen, mir über eine eigene_werte.php zusätzliche Daten in die Datenbank zu schreiben. Hier sind aktuell TagImMonat, TagImJAhr, Monat, Stunde hinterlegt. Vielleicht sollte ich noch Minuten mit dazu nehmen. Man kann diese dann beim Dashboard als Query-Variable hinterlegen und damit sogar Rechnen und die Zeitabfragen steuern:
Beispiel für Heute:
Liefert 2 Werte, es wird aber immer der letzte angezeigt und das ist der Wert für Heute
Beispiel für Gestern (bis gleiche Zeit heute, nicht Gesamt Gestern):
Liefert 2 Werte, es wird aber immer der letzte angezeigt und das ist der Wert für Gestern bis zur aktuellen Tageszeit. Geeignet für einen Vortagesvergleich...
Beispiel für aktuellen Monat:
Unter der Voraussetzung, dass die eigenen Variablen TagImMonat und Stunde zur Verfügung stehen (habe ich selbst in die Datenbank geschrieben) kann damit eine immer gültige Abfrage für den laufenden Monat geschrieben werden
Vormonat geht so nicht, da die Anzahl der Tage variiert, könnte man lösen, indem man sich auch eine Variable TageVormonat in die Datenbank schreibt.
Beispiel für aktuelles Jahr:
Unter der Voraussetzung, dass die eigenen Variablen TagImJahr und Stunde zur Verfügung stehen (habe ich selbst in die Datenbank geschrieben) kann damit eine immer gültige Abfrage für das laufende Jahr geschrieben werden
Vorjahr ist etwas ungenau, aber ohne Schaltjahr sollte es so funktionieren (gesamtes Vorjahr):
Nicht wirklich umsetzbar ist das bisher für Jahrestabellen, welche jeden Monat in einer gemeinsamen Grafik darstellen sollen, siehe meinen Beitrag hier (da hoffe ich noch auf geniale Ideen):
viewtopic.php?p=7092#p7092
Nebenbei, Deine Jahresabfrage lässt den 31.12.21 aus, geht also nur bis zum 30.12.21 inklusive.
Ich habe angefangen, mir über eine eigene_werte.php zusätzliche Daten in die Datenbank zu schreiben. Hier sind aktuell TagImMonat, TagImJAhr, Monat, Stunde hinterlegt. Vielleicht sollte ich noch Minuten mit dazu nehmen. Man kann diese dann beim Dashboard als Query-Variable hinterlegen und damit sogar Rechnen und die Zeitabfragen steuern:
Beispiel für Heute:
Code: Alles auswählen
SELECT integral(Gesamtleistung,1h) FROM "PV" WHERE time > now() - 1d GROUP BY time(1d)
Beispiel für Gestern (bis gleiche Zeit heute, nicht Gesamt Gestern):
Code: Alles auswählen
SELECT integral(Gesamtleistung,1h) FROM "PV" WHERE time > now() - 2d and time < now() - 1d GROUP BY time(1d)
Beispiel für aktuellen Monat:
Code: Alles auswählen
SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE (time >= now() - ${TagImMonat}d + 1d - ${Stunde}h) fill(linear)
Vormonat geht so nicht, da die Anzahl der Tage variiert, könnte man lösen, indem man sich auch eine Variable TageVormonat in die Datenbank schreibt.
Code: Alles auswählen
SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE (time >= now() - ${TagImMonat}d -${TageVormonat}d + 1d - ${Stunde}h) and (time < now() - ${TagImMonat}d + 1d - ${Stunde}h)fill(linear)
Code: Alles auswählen
SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE (time >= now() - ${TagImJahr}d + 1d - ${Stunde}h) fill(linear)
Vorjahr ist etwas ungenau, aber ohne Schaltjahr sollte es so funktionieren (gesamtes Vorjahr):
Code: Alles auswählen
SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE (time >= now() - ${TagImJahr}d -365d + 1d - ${Stunde}h) and (time < now() - ${TagImJahr}d + 1d - ${Stunde}h)fill(linear)
viewtopic.php?p=7092#p7092
-
- Beiträge: 1111
- Registriert: Mi 13. Mai 2020, 10:04
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 161 Mal
Re: Variablen für Datumswerte
Kaum habe ich es geschrieben ist mir noch eine einfache Lösung für die Monatstabellen eingefallen:
Man definiert sich in Grafana im Dashboard eine Variable Jahr (auch als Konstante möglich, dann muss diese halt einmal im Jahr geändert werden) und baut die Abfragen dann wie folgt:
Damit kann ich immer denn Monat Januar des Jahres abfragen, auf welchen die Variable Jahr gesetzt ist. Wenn ich auch noch eine Variable mit Vorjahr definiere, dann z.B. problemlos auch ein Vorjahresvergleich möglich.
Damit sind viele Probleme der jährlichen Nacharbeit gelöst...
Man definiert sich in Grafana im Dashboard eine Variable Jahr (auch als Konstante möglich, dann muss diese halt einmal im Jahr geändert werden) und baut die Abfragen dann wie folgt:
Code: Alles auswählen
SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE time >='20${Jahr}-01-01' and time < '20${Jahr}-02-01' tz('Europe/Berlin')
Damit sind viele Probleme der jährlichen Nacharbeit gelöst...
-
- Beiträge: 137
- Registriert: Di 6. Aug 2019, 22:06
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 7 Mal
Re: Variablen für Datumswerte
Danke @Bogeyof
Für deine Ausführungen.
Du hast dir also eine eigene Abfrage geschaffen die dir deine Werte in die Datenbank schreibt. Wie z.b. $TagImMonat, ...
Hut ab
Die du dann wohl über die Variablen Funktion im Dashboard ausließt.
Dann sollte es doch auch möglich sein einen solchen String "2021-01-01T00:00:00Z" z.b. als (DatStartAktJahr") oder auch abgeändert als DatEndeAktJahr) in die die DB zu schreiben. Wobei man die Variable (Jahr) vom Raspi bekommen könnte.
Oder stehe ich da auf dem Schlauch?
Für deine Ausführungen.
Du hast dir also eine eigene Abfrage geschaffen die dir deine Werte in die Datenbank schreibt. Wie z.b. $TagImMonat, ...
Hut ab
Die du dann wohl über die Variablen Funktion im Dashboard ausließt.
Dann sollte es doch auch möglich sein einen solchen String "2021-01-01T00:00:00Z" z.b. als (DatStartAktJahr") oder auch abgeändert als DatEndeAktJahr) in die die DB zu schreiben. Wobei man die Variable (Jahr) vom Raspi bekommen könnte.
Oder stehe ich da auf dem Schlauch?
Cu Gerd
My Coffee is always #000000!
My Coffee is always #000000!
-
- Beiträge: 1111
- Registriert: Mi 13. Mai 2020, 10:04
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 161 Mal
Re: Variablen für Datumswerte
Klar würde das gehen. Aber auf der anderen Seite sind die Selects ja nur einmal zu definieren und dann unabhängig vom aktuellen Jahr. Mit den Variablen TagImJahr, TageMonat, TagImMonat, Monat, Stunde kann man so viele unterschiedliche "unabhängige" Abfragen machen, dass ich den Vorteil eines festen Strings in der Datenbank nicht wirklich sehe. Aber möglich wäre es.
Wie man einfach und vom Update der Solaranzeige unabhängig eigene Werte in die Datenbank schreiben kann habe ich hier beschrieben (und in dem dort verlinkten Thema):
viewtopic.php?p=6839#p6839
Wie man einfach und vom Update der Solaranzeige unabhängig eigene Werte in die Datenbank schreiben kann habe ich hier beschrieben (und in dem dort verlinkten Thema):
viewtopic.php?p=6839#p6839
-
- Beiträge: 1111
- Registriert: Mi 13. Mai 2020, 10:04
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 161 Mal
Re: Variablen für Datumswerte
Ich denke ich habe eine machbare Lösung gefunden. Evtl. wird sie @Ulrich in den Standard mit übernehmen:
siehe viewtopic.php?p=7141#p7141
siehe viewtopic.php?p=7141#p7141
-
- Beiträge: 137
- Registriert: Di 6. Aug 2019, 22:06
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 7 Mal
Re: Variablen für Datumswerte
dankeBogeyof hat geschrieben: ↑So 14. Feb 2021, 13:54Ich denke ich habe eine machbare Lösung gefunden. Evtl. wird sie @Ulrich in den Standard mit übernehmen:
siehe viewtopic.php?p=7141#p7141
Cu Gerd
My Coffee is always #000000!
My Coffee is always #000000!
- Ulrich
- Administrator
- Beiträge: 5560
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 154 Mal
- Danksagung erhalten: 883 Mal
- Kontaktdaten:
Re: Variablen für Datumswerte
Mit einem Update stehen jedem die zusätzlichen Werte in dem Statistik Measurement zur Verfügung.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]
Ulrich . . . . . . . . [Projekt Administrator]