CSV Daten über Grafana exportieren

Einleitung

Weil bei Imkerliche Daten und Umweltdaten exportieren bzw. Export von DWD Daten die Frage nach der Exportmöglichkeit von Daten über Grafana aufkam.

Datenexport via Grafana

Hier gibt es verschiedene Möglichkeiten für verschiedene Komfortstufen.

1. Direkt über die Data Source API

Da das Grafana Userinterface selbst ja irgendwie an die Daten herankommen muss, gibt es selbstverständlich eine HTTP API, die man für solche Zwecke natürlich anzapfen könnte, GitHub - daq-tools/monitoring-check-grafana: Monitor a Grafana datasource against data becoming stale to detect data loss or other dropout conditions. tut es schließlich genauso. Um hier in den richtigen Sattel zu steigen, bemüht man am besten die WebDeveloper Tools seines favorisierten Browsers und entsprechende Debugging Skills, um sich die passende URL herauszusuchen, während man per Dashboard darauf zugreift. Diese Option mag krude sein, steht aber in jedem Fall zur Verfügung und ermöglicht die Eingabe beliebiger InfluxDB Anfragen.

2. CSV Export Funktionalität im User Interface

Grafana hat schon seit langem eine entsprechende Funktionalität an Bord, siehe Graph: Export data as JSON & CSV · Issue #861 · grafana/grafana · GitHub. In der Tat steht diese Funktion auch bei den meisten Panels im Dashboard via “More… » Export CSV” im Kontextmenü eines Panels zur Verfügung:
image

Dort wählt man dann am besten “Series as columns”:
image

Leider geht das nicht bei allen Panels, bei vielen 3rd-party Panels steht diese Funktion nicht zur Verfügung:
image

Anmerkung: Damit bekommt man derzeit halt nur umständlich einzelne Teile der Daten raus, deshalb brauchen wir mittelfristig eine bessere Exportschnittstelle.

Gab es bei den Grafana-Exporten nicht das Problem, dass nicht die “echten” gemessenen bzw. in der DB liegenden Werte ausgegeben werden, sondern je nach Zoomstufe berechneten Werte? Oder verwechsele ich das mit Kotori?

Beim Export à la 2. CSV Export Funktionalität ist es durchaus möglich, dass die Datenquelle durch ein paar Parametrisierungen angesteuert wird, wie sie im Dashboard/Panel hinterlegt wurden. Das würde sich dann z.B. auch auf die Aggregation der Daten im Export auswirken. Das müsste man mal überprüfen und z.B. gegen einen Export à la 1. Direkt über die Data Source API halten, das gibt die Daten 1:1 raus bzw. genau so, wie man es über eine InfluxDB Anfrage anspricht.

Kotori gibt die Daten ebenfalls 1:1 raus, kann sie aber optional manipulieren, wie unter Data export — Kotori 0.22.7 documentation beschrieben.

Wenn man z.B. Lücken in den Daten hat (sparse), kann der Query-Parameter "interpolate=true" weiterhelfen. An dieser Stelle gibt es z.B. noch "pad" und "backfill" – das wird alles von pandas, der Python Data Analysis Library implementiert. Da die o.g. Dokumentation hier noch unvollständig ist, hilft ein Blick in die Quellen bei kotori/target.py at 0.22.7 · daq-tools/kotori · GitHub.

Genau das war es, was ich noch im Hinterkopf hatte! Danke!