

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Daten abfragen und transformieren
<a name="v9-panels-query-xform"></a>

****  
Dieses Dokumentationsthema wurde für Grafana-Workspaces entwickelt, die **Grafana-Version 9.x** unterstützen.  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 10.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 10](using-grafana-v10.md)  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 8](using-grafana-v8.md)

Grafana unterstützt viele Arten von [Datenquellen](AMG-data-sources.md). *Datenquellenabfragen* geben Daten zurück, die Grafana *transformieren* und visualisieren kann. Jede Datenquelle verwendet ihre eigene Abfragesprache, und Datenquellen-Plugins implementieren jeweils eine Benutzeroberfläche zur Abfrageerstellung, die als Abfrageeditor bezeichnet wird.

## Informationen zu Abfragen
<a name="v9-panels-query-xform-about"></a>

Grafana-Panels kommunizieren mit Datenquellen über Abfragen, die Daten für die Visualisierung abrufen. Eine Abfrage ist eine Frage, die in der von der Datenquelle verwendeten Abfragesprache geschrieben ist.

In den Datenquellenoptionen des Panels können Sie die Abfragehäufigkeit und die Grenzwerte für die Datenerfassung konfigurieren. Grafana unterstützt bis zu 26 Abfragen pro Panel.

Weitere Informationen zur Abfragesprache der einzelnen Datenquellen finden Sie im Abschnitt [Datenquellen](AMG-data-sources.md).

**Abfrage-Editoren**

Der *Abfrage-Editor* jeder Datenquelle bietet eine benutzerdefinierte Benutzeroberfläche, mit der Sie Abfragen schreiben können, die die einzigartigen Funktionen nutzen.

Aufgrund der Unterschiede zwischen den Abfragesprachen sieht jeder Abfrage-Editor für Datenquellen anders aus und funktioniert auch anders. Abhängig von Ihrer Datenquelle bietet der Abfrage-Editor möglicherweise Funktionen zur automatischen Vervollständigung, Metriknamen, Variablenvorschläge oder eine visuelle Oberfläche zur Abfrageerstellung.

Einzelheiten zu den einzigartigen Funktionen des Abfrage-Editors einer bestimmten Datenquelle finden Sie in der zugehörigen Dokumentation:
+ Informationen zu den in Grafana enthaltenen Datenquellen finden Sie unter [Integrierte Datenquellen](AMG-data-sources-builtin.md).
+ Informationen zu den in der Grafana Enterprise Edition enthaltenen Datenquellen finden Sie unter. [Connect zu Unternehmensdatenquellen her](AMG-data-sources-enterprise.md)

**Abfragesyntax**

Datenquellen verwenden unterschiedliche Abfragesprachen, um Daten anzufordern. Einzelheiten zur eindeutigen Abfragesprache einer bestimmten Datenquelle finden Sie in der zugehörigen Dokumentation.

**PostgreSQL-Beispiel:**

```
SELECT hostname FROM host WHERE region IN($region)
```

**PromQL-Beispiel:**

```
query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
```

**Spezielle Datenquellen**

**Grafana umfasst auch drei spezielle Datenquellen: **Grafana**, **Mixed** und Dashboard.** Einzelheiten finden Sie unter Datenquellen

## Navigieren Sie zur Registerkarte „Abfrage“
<a name="v9-panels-query-xform-navigate"></a>

Die Registerkarte „**Abfrage**“ eines Panels besteht aus den folgenden Elementen:
+ **Datenquellenauswahl — Wählt** die abzufragende Datenquelle aus.
+ **Abfrageoptionen:** — Legt maximale Datenabrufparameter und Abfragelaufzeitintervalle fest.
+ **Schaltfläche „Abfrageinspektor“:** Öffnet den Bereich „Abfrageinspektor“, in dem Sie Ihre Abfrage anzeigen und optimieren können.
+ **Liste des Abfrage-Editors:** — Listet die Abfragen auf, die Sie geschrieben haben.
+ **Ausdrücke:** — Verwendet den Ausdrucks-Generator, um Warnungsausdrücke zu erstellen. Weitere Informationen zu Ausdrücken finden Sie unter [Ausdrucksabfragen schreiben](v9-panels-query-xform-expressions.md).

## Fügen Sie eine Abfrage hinzu
<a name="v9-panels-query-xform-add"></a>

Eine Abfrage gibt Daten zurück, die Grafana in Dashboard-Panels visualisiert. Wenn Sie ein Panel erstellen, wählt Grafana automatisch die Standarddatenquelle aus.

**Um eine Abfrage hinzuzufügen**

1. Bearbeiten Sie das Panel, zu dem Sie eine Abfrage hinzufügen.

1. Wählen Sie die Registerkarte **Queries** (Abfragen) aus.

1. Wählen Sie das Dropdownmenü **Datenquelle** und wählen Sie eine Datenquelle aus.

1. Wählen Sie **Abfrageoptionen**, um die maximale Anzahl von Datenpunkten zu konfigurieren, die Sie benötigen. Weitere Informationen zu Abfrageoptionen finden Sie unter[Abfrageoptionen](#v9-panels-query-xform-options).

1. Schreiben Sie die Abfrage mit dem Abfrage-Editor.

1. Wählen Sie **Anwenden** aus.

Grafana fragt die Datenquelle ab und visualisiert die Daten.

## Abfragen verwalten
<a name="v9-panels-query-xform-manage"></a>

Grafana organisiert Abfragen in zusammenklappbaren Abfragezeilen. Jede Abfragezeile enthält einen Abfrage-Editor und ist mit einem Buchstaben (A, B, C usw.) gekennzeichnet.

Um Ihre Abfragen zu verwalten, können Sie Abfragen kopieren, Abfragen ausblenden, eine Abfrage entfernen, Abfragen neu anordnen und die Hilfe für den Abfrage-Editor ein- und ausschalten.

## Abfrageoptionen
<a name="v9-panels-query-xform-options"></a>

Wählen Sie neben der Datenquellenauswahl die **Option Abfrageoptionen** aus, um die Einstellungen für die ausgewählte Datenquelle anzuzeigen. Änderungen, die Sie hier vornehmen, wirken sich nur auf Abfragen aus, die in diesem Bereich vorgenommen wurden.

Grafana legt Standardwerte fest, die in dunkelgrauem Text angezeigt werden. Änderungen werden in weißem Text angezeigt. Um ein Feld auf die Standardeinstellung zurückzusetzen, löschen Sie den weißen Text aus dem Feld.

Zu den Optionen für die Abfrage von Panel-Datenquellen gehören:
+ **Max. Datenpunkte** — Wenn die Datenquelle dies unterstützt, wird damit die maximale Anzahl von Datenpunkten für jede zurückgegebene Serie festgelegt. Wenn die Abfrage mehr Datenpunkte zurückgibt als die Einstellung für maximale Datenpunkte, reduziert die Datenquelle die Anzahl der zurückgegebenen Punkte, indem sie sie nach Durchschnitt, Maximum oder einer anderen Funktion zusammenfasst.

  Sie können die Anzahl der Punkte einschränken, um die Abfrageleistung zu verbessern oder die visualisierte Linie zu glätten. Der Standardwert ist die Breite (oder Anzahl der Pixel) des Diagramms, da Sie nur so viele Datenpunkte visualisieren können, wie das Grafikfenster Platz zur Anzeige bietet.

  Bei Streaming-Daten verwendet Grafana den Wert für maximale Datenpunkte für den Rolling-Puffer. Streaming ist ein kontinuierlicher Datenfluss, und die Pufferung unterteilt den Stream in Blöcke. Loki streamt beispielsweise Daten in seinem Live-Tailing-Modus.
+ **Minimales Intervall** — Legt einen Mindestgrenzwert für das automatisch berechnete Intervall fest, bei dem es sich in der Regel um das minimale Scrape-Intervall handelt. Wenn alle 15 Sekunden ein Datenpunkt gespeichert wird, profitieren Sie nicht von einem niedrigeren Intervall. Sie können dies auch auf ein höheres Minimum als das Scrape-Intervall festlegen, um Abfragen abzurufen, die grobkörniger sind und gut funktionieren.
+ **Intervall** — Legt eine Zeitspanne fest, die Sie beim Aggregieren oder Gruppieren von Datenpunkten nach Zeit verwenden können.

  Grafana berechnet automatisch ein geeignetes Intervall, das Sie als Variable in Abfragen mit Vorlagen verwenden können. Die Variable wird entweder in Sekunden (`$__interval`) oder Millisekunden () gemessen. `$__interval_ms`

  Intervalle werden normalerweise in Aggregationsfunktionen wie Summe oder Durchschnitt verwendet. Dies ist beispielsweise eine Prometheus-Abfrage, die die Intervallvariable verwendet:. `rate(http_requests_total[$__interval])`

  Dieses automatische Intervall wird auf der Grundlage der Breite des Diagramms berechnet. Wenn der Benutzer die Ansicht einer Visualisierung verkleinert, vergrößert sich das Intervall, was zu einer grobkörnigeren Aggregation führt. Ebenso verringert sich das Intervall, wenn der Benutzer die Ansicht vergrößert, was zu einer feinkörnigeren Aggregation führt.

  Weitere Informationen finden Sie unter [Globale Variablen](v9-dash-variable-add.md#v9-dash-variable-add-global).
+ **Relative Zeit** — Überschreibt den relativen Zeitraum für einzelne Bereiche, wodurch sie sich von dem unterscheiden, was in der Dashboard-Zeitauswahl in der oberen rechten Ecke des Dashboards ausgewählt wurde. Sie können dies verwenden, um Metriken aus verschiedenen Zeiträumen oder Tagen auf demselben Dashboard anzuzeigen.
**Anmerkung**  
Überschreibungen der Panel-Zeit haben keine Auswirkung, wenn der Zeitbereich des Dashboards absolut ist.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/grafana/latest/userguide/v9-panels-query-xform.html)
+ **Zeitverschiebung** — Überschreibt den Zeitbereich für einzelne Panels, indem Start und Ende relativ zur Zeitauswahl verschoben werden. Sie können beispielsweise den Zeitraum für das Panel so ändern, dass er zwei Stunden vor dem Zeitwähler im Dashboard liegt.
**Anmerkung**  
Überschreibungen der Panel-Zeit haben keine Auswirkung, wenn der Zeitbereich des Dashboards absolut ist.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/grafana/latest/userguide/v9-panels-query-xform.html)
+ **Cache-Timeout** — *(Nur sichtbar, wenn in der Datenquelle verfügbar)* Überschreibt das Standard-Cache-Timeout, wenn Ihr Zeitreihenspeicher über einen Abfrage-Cache verfügt. Geben Sie diesen Wert als numerischen Wert in Sekunden an.

# Ausdrucksabfragen schreiben
<a name="v9-panels-query-xform-expressions"></a>

****  
Dieses Dokumentationsthema wurde für Grafana-Workspaces entwickelt, die **Grafana-Version 9.x** unterstützen.  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 10.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 10](using-grafana-v10.md)  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 8](using-grafana-v8.md)

Serverseitige Ausdrücke ermöglichen es Ihnen, Daten, die von Abfragen zurückgegeben werden, mit mathematischen und anderen Operationen zu bearbeiten. Ausdrücke erzeugen neue Daten und manipulieren nicht die von Datenquellen zurückgegebenen Daten.

## Über Ausdrücke
<a name="v9-panels-query-about"></a>

Serverseitige Ausdrücke ermöglichen es Ihnen, Daten, die von Abfragen zurückgegeben werden, mit mathematischen und anderen Operationen zu bearbeiten. Ausdrücke erzeugen neue Daten und manipulieren nicht die von Datenquellen zurückgegebenen Daten, abgesehen von einigen geringfügigen Datenumstrukturierungen, um die Daten als Eingabe für Ausdrücke akzeptabel zu machen.

**Verwendung von Ausdrücken**

Ausdrücke werden hauptsächlich von [Grafana Alerting](v9-alerts.md) verwendet. Die Verarbeitung erfolgt serverseitig, sodass Ausdrücke auch ohne Browsersitzung ausgeführt werden können. Ausdrücke können jedoch auch mit Backend-Datenquellen und Visualisierungen verwendet werden.

**Anmerkung**  
Ausdrücke funktionieren nicht mit älteren Dashboard-Warnungen.

Ausdrücke sollen Datenquellen erweitern, indem sie die Kombination von Abfragen aus verschiedenen Datenquellen ermöglichen oder Operationen bereitstellen, die in einer Datenquelle nicht verfügbar sind.

**Anmerkung**  
Wenn möglich, sollten Sie die Datenverarbeitung innerhalb der Datenquelle durchführen. Das Kopieren von Daten aus dem Speicher auf den Grafana-Server zur Verarbeitung ist ineffizient, daher sind Ausdrücke auf die einfache Datenverarbeitung ausgerichtet.

Ausdrücke funktionieren mit Datenquellenabfragen, die Zeitreihen oder Zahlendaten zurückgeben. Sie arbeiten auch mit [mehrdimensionalen Daten](getting-started-grafanaui.md#time-series-dimensions). Zum Beispiel eine Abfrage, die mehrere Datenreihen zurückgibt, wobei jede Datenreihe durch Beschriftungen oder Tags identifiziert wird.

Ein einzelner Ausdruck verwendet eine oder mehrere Abfragen oder andere Ausdrücke als Eingabe und fügt dem Ergebnis Daten hinzu. Jeder einzelne Ausdruck oder jede einzelne Abfrage wird durch eine Variable repräsentiert, bei der es sich um einen benannten Bezeichner handelt, der als RefID bezeichnet wird (z. B. der Standardbuchstabe `A` oder`B`).

Um auf die Ausgabe eines einzelnen Ausdrucks oder einer Datenquellenabfrage in einem anderen Ausdruck zu verweisen, wird dieser Bezeichner als Variable verwendet.

**Arten von Ausdrücken**

Ausdrücke funktionieren mit zwei Datentypen.
+ Eine Sammlung von Zeitreihen.
+ Eine Sammlung von Zahlen, wobei jede Zahl ein Element ist.

Jede Sammlung wird anhand einer einzelnen Datenquellenabfrage oder eines einzelnen Ausdrucks zurückgegeben und durch die RefID dargestellt. Jede Sammlung ist ein Satz, bei dem jedes Element in der Gruppe anhand seiner Dimensionen, die als [Labels](getting-started-grafanaui.md#labels) oder Schlüssel-Wert-Paare gespeichert sind, eindeutig identifiziert wird.

**Datenquellenabfragen**

Serverseitige Ausdrücke unterstützen nur Datenquellenabfragen für Backend-Datenquellen. Es wird allgemein davon ausgegangen, dass es sich bei den Daten um Zeitreihendaten handelt. In future wollten wir eine Assertion für Daten vom Rückgabetyp der Abfrage (Zahl oder Zeitreihe) hinzufügen, damit Ausdrücke Fehler besser behandeln können.

Datenquellenabfragen werden, wenn sie mit Ausdrücken verwendet werden, von der Expression Engine ausgeführt. Dabei werden die Daten so umstrukturiert, dass sie entweder eine Zeitreihe oder eine Zahl pro Datenrahmen enthalten. Wenn Sie also beispielsweise eine Datenquelle verwenden, die mehrere Reihen in einem Frame in der Tabellenansicht zurückgibt, stellen Sie möglicherweise fest, dass sie anders aussieht, wenn sie mit Ausdrücken ausgeführt wird.

Derzeit wird bei der Verwendung von Datenrahmen nur das Format (Zahl) unterstützt, das kein Zeitreihenformat ist, wenn Sie eine Tabellenantwort haben, die einen Datenrahmen ohne Zeit, Zeichenkettenspalten und eine Zahlenspalte zurückgibt:


| Loc | Host | AVG\$1CPU | 
| --- | --- | --- | 
|  MIA  |  A  |  1  | 
|  NYC  |  B  |  2  | 

Das obige Beispiel erzeugt eine Zahl, die mit Ausdrücken funktioniert. Die Zeichenkettenspalten werden zu Beschriftungen und die Zahlenspalte zum entsprechenden Wert. Zum Beispiel `{"Loc": "MIA", "Host": "A"}` mit einem Wert von 1.

**Operationen**

Sie können die folgenden Operationen in Ausdrücken verwenden: Mathe, Reduce und Resample.

**Math (Mathematik)**

Mathe steht für frei formbare mathematische Formeln für Zeitreihen oder Zahlendaten. Bei mathematischen Operationen werden Zahlen und Zeitreihen als Eingabe verwendet und in andere Zahlen und Zeitreihen umgewandelt.

Auf Daten aus anderen Abfragen oder Ausdrücken wird beispielsweise mit der RefID verwiesen, der ein Dollarzeichen vorangestellt ist. `$A` Wenn der Name der Variablen Leerzeichen enthält, können Sie eine geschweifte Syntax wie verwenden. `${my variable}`

Numerische Konstanten können dezimal (`2.24`), oktal (mit einer führenden Null wie`072`) oder hexadezimal (mit einem führenden 0x wie) sein. `0x2A` Exponentialzahlen und Vorzeichen werden ebenfalls unterstützt (z. B.). `-0.8e-2`

**Operatoren**

Die arithmetischen (`+`, binären und unären`-`,,`*`, `/``%`, Exponenten`**`), relationalen (,,`<`,, `>``==`,`<=`) und logischen (`!=``>=`, `&&``||`, und `!` unären) Operatoren werden unterstützt.

Wie sich die Operation mit Daten verhält, hängt davon ab, ob es sich um Zahlen- oder Zeitreihendaten handelt.

Bei binären Operationen wie `$A + $B` oder `$A || $B` wird der Operator je nach Datentyp auf folgende Weise angewendet:
+ Wenn beide `$A` und eine Zahl `$B` sind, wird die Operation zwischen den beiden Zahlen ausgeführt.
+ Wenn eine Variable eine Zahl und die andere Variable eine Zeitreihe ist, wird die Operation zwischen dem Wert jedes Punktes in der Zeitreihe und der Zahl ausgeführt.
+ Wenn es sich bei beiden `$A` um Zeitreihendaten `$B` handelt, wird die Operation zwischen den einzelnen Werten in den beiden Reihen für jeden Zeitstempel ausgeführt, der `$A` sowohl in als auch vorhanden ist`$B`. Die `Resample` Operation kann verwendet werden, um Zeitstempel anzuordnen.

Zusammenfassung:
+ Nummer OP-Nummer = Nummer
+ Nummer OP-Serie = Serie
+ Serie OP Serie = Serie

Da Ausdrücke mit mehreren Reihen oder Zahlen arbeiten, die durch eine einzige Variable repräsentiert werden, führen binäre Operationen auch eine Vereinigung (Verknüpfung) zwischen den beiden Variablen durch. Dies erfolgt auf der Grundlage der identifizierenden Bezeichnungen, die jeder einzelnen Reihe oder Zahl zugeordnet sind.

Wenn Sie also Zahlen mit Beschriftungen wie `{host=web01}` in `$A` und eine weitere Zahl `$B` mit denselben Beschriftungen haben, wird die Operation zwischen diesen beiden Elementen innerhalb jeder Variablen ausgeführt, und das Ergebnis verwendet dieselben Beschriftungen. Die Regeln für das Verhalten dieser Vereinigung lauten wie folgt:
+ Ein Objekt ohne Beschriftungen lässt sich mit allem verbinden.
+ Wenn beide `$A` nur ein Objekt enthalten (eine Serie oder eine Zahl), werden sie zusammengefügt. `$B`
+ Wenn die Beschriftungen exakt übereinstimmen, werden sie zusammengefügt.
+ Wenn es sich bei den Beschriftungen um eine Teilmenge der anderen handelt, z. B. wenn ein Element in beschriftet `$A` ist `{host=A,dc=MIA}` und ein Element in beschriftet `$B` ist, werden `{host=A}` sie zusammengefügt.
+ Wenn innerhalb einer Variablen beispielsweise für jedes Element unterschiedliche Tag-Schlüssel `$A` vorhanden sind, ist das Verbindungsverhalten undefiniert.

Die relationalen und logischen Operatoren geben 0 für falsch und 1 für wahr zurück.

**Mathematische Funktionen**

Während die meisten Funktionen in den eigenen Ausdrucksoperationen existieren, hat die mathematische Operation einige Funktionen, die mathematischen Operatoren oder Symbolen ähneln. Wenn Funktionen entweder Zahlen oder Reihen annehmen können, wird derselbe Typ wie das Argument zurückgegeben. Handelt es sich um eine Reihe, wird die Operation für den Wert jedes Punktes in der Reihe ausgeführt.

*Bauchmuskeln*

abs gibt den absoluten Wert seines Arguments zurück, der eine Zahl oder eine Reihe sein kann. Zum Beispiel `abs(-1)` oder `abs($A)`.

*is\$1inf*

is\$1inf nimmt eine Zahl oder eine Reihe und gibt `1` für `Inf` Werte (negativ oder positiv) und `0` für andere Werte zurück. Zum Beispiel `is_inf($A)`.

**Anmerkung**  
Wenn Sie beispielsweise gezielt nach negativer Unendlichkeit suchen müssen, können Sie einen Vergleich wie durchführen. `$A == infn()`

*is\$1nan*

is\$1nan nimmt eine Zahl oder eine Reihe und gibt `1` für `NaN` Werte und `0` für andere Werte zurück. Zum Beispiel `is_nan($A)`. Diese Funktion existiert, weil sie nicht gleich `NaN` ist. `NaN`

*is\$1null*

is\$1null nimmt eine Zahl oder eine Reihe und gibt `1` für `null` Werte und `0` für andere Werte zurück. Zum Beispiel `is_null($A)`.

*ist\$1Zahl*

is\$1number nimmt eine Zahl oder eine Reihe und gibt `1` für alle reellen Zahlenwerte und `0` für andere Werte (die`null`,`Inf+`, `Inf-` und sind) zurück. `NaN` Zum Beispiel `is_number($A)`.

*log*

Log gibt den natürlichen Logarithmus seines Arguments zurück, der eine Zahl oder eine Reihe sein kann. Wenn der Wert kleiner als 0 ist, `NaN` wird zurückgegeben. Zum Beispiel `log(-1)` oder `log($A)`.

*inf, infn, nan und null*

Die Funktionen inf, infn, nan und null geben alle einen einzelnen Wert des Namens zurück. Sie existieren hauptsächlich zum Testen. Beispiel: `null()`.

*round*

Round gibt einen gerundeten Ganzzahlwert zurück. Zum Beispiel `round(3.123)` oder `round($A)`.

*ceil*

Ceil rundet die Zahl auf den nächsten ganzzahligen Wert auf. Beispielsweise gibt `ceil(3.123)` `4` zurück.

*floor*

Floor rundet die Zahl auf den nächsten ganzzahligen Wert ab. Beispiel:`floor(3.123`) gibt zurück`3`.

**Reduzieren**

Reduce verwendet eine oder mehrere Zeitreihen, die von einer Abfrage oder einem Ausdruck zurückgegeben wurden, und wandelt jede Reihe in eine einzelne Zahl um. Die Beschriftungen der Zeitreihen werden als Beschriftungen für jede ausgegebene reduzierte Zahl beibehalten.

*Felder:*
+ **Funktion** — Die zu verwendende Reduktionsfunktion
+ **Eingabe** — Die Variable (RefID (z. B.`A`)), für die ein Resampling durchgeführt werden soll
+ **Modus** — Ermöglicht die Steuerung des Verhaltens der Reduktionsfunktion, wenn eine Reihe nicht numerische Werte enthält (Null, NaN, \$1-Inf)

**Reduktionsfunktionen**

*Count*

Count gibt die Anzahl der Punkte in jeder Reihe zurück.

*Meint*

Der Mittelwert gibt die Summe aller Werte in jeder Reihe geteilt durch die Anzahl der Punkte in dieser Reihe zurück. Wenn im `strict` Modus irgendwelche Werte in der Reihe Null oder Nan sind oder wenn die Reihe leer ist, wird NaN zurückgegeben.

*Min und Max*

Min und Max geben den kleinsten bzw. größten Wert in der Reihe zurück. Wenn im `strict` Modus irgendwelche Werte in der Reihe Null oder Nan sind oder wenn die Reihe leer ist, wird NaN zurückgegeben.

*Sum (Summe)*

Sum gibt die Summe aller Werte in der Reihe zurück. Wenn die Reihe die Länge Null hat, ist die Summe 0. Wenn im `strict` Modus NaN- oder Null-Werte in der Reihe vorhanden sind, wird NaN zurückgegeben.

*Zuletzt*

Last gibt die letzte Zahl in der Reihe zurück. Wenn die Serie keine Werte hat, wird NaN zurückgegeben.

**Reduktionsmodi**

*Streng*

Im Strict-Modus wird die Eingangsserie unverändert verarbeitet. Wenn Werte in der Reihe nicht numerisch sind (Null, NaN oder \$1-Inf), wird NaN zurückgegeben.

*Löschen Sie nicht-numerische Werte*

In diesem Modus werden alle nicht numerischen Werte (Null, NaN oder \$1-Inf) in der Eingangsserie herausgefiltert, bevor die Reduktionsfunktion ausgeführt wird.

*Ersetzen Sie nicht numerische Zahlen*

In diesem Modus werden alle nicht numerischen Werte durch einen vordefinierten Wert ersetzt.

**Stichprobe neu berechnen**

Bei Resampling werden die Zeitstempel in jeder Zeitreihe so geändert, dass ein konsistentes Zeitintervall entsteht. Der Hauptanwendungsfall besteht darin, dass Sie Zeitreihen, die nicht dieselben Zeitstempel haben, neu berechnen können, sodass Berechnungen zwischen ihnen durchgeführt werden können. Dies kann erreicht werden, indem jede der beiden Serien neu berechnet wird, und dann in einer mathematischen Operation auf die neu abgetasteten Variablen verwiesen wird.

*Felder:*
+ **Eingabe** — Die Variable der Zeitreihendaten (RefID (z. B.`A`)), für die ein Resampling durchgeführt werden soll
+ **Resampling** bis — Die Zeitdauer, auf die das Resampling durchgeführt werden soll, kann beispielsweise `10s.` `s` Sekunden, `m` Minuten, `h` Stunden, `d` Tage, Wochen und `w` Jahre sein. `y`
+ **Downsample** — Die Reduktionsfunktion, die verwendet werden soll, wenn pro Fensterstichprobe mehr als ein Datenpunkt vorhanden ist. Einzelheiten zum Verhalten finden Sie in der Reduktionsoperation.
+ **Upsample** — Die Methode, die verwendet werden soll, um eine Fensterprobe ohne Datenpunkte zu füllen.
  + **Das Pad** wird mit dem letzten bekannten Wert gefüllt
  + mit dem nächsten bekannten Wert **auffüllen**
  + **fillna** zum Füllen leerer Beispielfenster mit NaNs

## Schreiben Sie einen Ausdruck
<a name="v9-panels-query-write"></a>

Wenn Ihre Datenquelle sie unterstützt, zeigt Grafana die Schaltfläche **Ausdruck** und alle vorhandenen Ausdrücke in der Liste des Abfrage-Editors an.

**Um einen Ausdruck zu schreiben**

1. Öffnen Sie das Panel.

1. Wählen Sie unter der Abfrage die Option **Ausdruck** aus.

1. Wählen Sie im Feld **Operation** den Ausdruckstyp aus, den Sie schreiben möchten.

1. Schreiben Sie den Ausdruck.

1. Wählen Sie **Anwenden** aus.

## Sonderfälle
<a name="v9-panels-query-special"></a>

Wenn eine abgefragte Datenquelle keine Reihen oder Zahlen zurückgibt, gibt die Expression Engine zurück. `NoData` Wenn eine Anforderung beispielsweise zwei Datenquellenabfragen enthält, die durch einen Ausdruck zusammengeführt werden, und wenn sie von mindestens einer der Datenquellenabfragen zurückgegeben wird, dann `NoData` ist das zurückgegebene Ergebnis für die gesamte Abfrage. `NoData` Weitere Informationen darüber, wie Grafana Alerting `NoData` Ergebnisse verarbeitet, finden Sie unter. [Es werden keine Daten- oder Fehlerfälle behandelt](v9-alerting-managerules-grafana.md#v9-alerting-rule-no-data-error)

# Abfrageergebnisse mit einem anderen Panel teilen
<a name="v9-panels-query-share"></a>

****  
Dieses Dokumentationsthema wurde für Grafana-Workspaces entwickelt, die **Grafana-Version 9.x** unterstützen.  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 10.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 10](using-grafana-v10.md)  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 8](using-grafana-v8.md)

Mit Grafana können Sie das Abfrageergebnis aus einem Panel für jedes andere Panel im Dashboard verwenden. Durch die gemeinsame Nutzung von Abfrageergebnissen über mehrere Panels hinweg wird die Anzahl der Abfragen an Ihre Datenquelle reduziert, wodurch die Leistung Ihres Dashboards verbessert werden kann.

Mit der Dashboard-Datenquelle können Sie einen Bereich in Ihrem Dashboard auswählen, der die Abfragen enthält, für die Sie die Ergebnisse teilen möchten. Anstatt für jedes Panel eine separate Abfrage zu senden, sendet Grafana eine Abfrage und andere Panels verwenden die Abfrageergebnisse, um Visualisierungen zu erstellen.

Diese Strategie kann die Anzahl der Abfragen drastisch reduzieren, wenn Sie beispielsweise mehrere Panels haben, die dieselben Daten visualisieren.

**Um Abfrageergebnisse gemeinsam zu nutzen**

1. [Erstellen Sie ein Dashboard](v9-dash-creating.md).

1. Ändern Sie den Titel in`Source panel`. Sie verwenden dieses Panel als Quelle für die anderen Panels.

1. Definieren Sie die Abfrage oder Abfragen, die Sie teilen möchten.

   Wenn keine Datenquelle verfügbar ist, verwenden Sie die Datenquelle, die **TestData**eine zufällige Zeitreihe zurückgibt, die Sie zum Testen verwenden können.

1. Fügen Sie ein zweites Fenster hinzu und wählen Sie die **Dashboard-Datenquelle** im Abfrage-Editor aus.

1. Wählen Sie in der **Liste „Ergebnisse aus Bedienfeld verwenden**“ den ersten Bereich aus, den Sie erstellt haben.

Alle im Quellbereich definierten Abfragen sind jetzt für das neue Bedienfeld verfügbar. Abfragen, die im Quellbereich gestellt wurden, können mit mehreren Panels geteilt werden.

Sie können auf eine der Abfragen klicken, um zu dem Bereich zu gelangen, in dem sie definiert sind.

# Transformieren von Daten
<a name="v9-panels-xform"></a>

****  
Dieses Dokumentationsthema wurde für Grafana-Workspaces entwickelt, die **Grafana-Version 9.x** unterstützen.  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 10.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 10](using-grafana-v10.md)  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 8](using-grafana-v8.md)

Transformationen sind eine leistungsstarke Methode, um Daten zu bearbeiten, die von einer Abfrage zurückgegeben werden, bevor das System eine Visualisierung anwendet. Mithilfe von Transformationen können Sie:
+ Felder umbenennen
+ Zeitreihendaten verbinden
+ Führen Sie mathematische Operationen abfrageübergreifend durch
+ Verwenden Sie die Ausgabe einer Transformation als Eingabe für eine andere Transformation

Für Benutzer, die auf mehrere Ansichten desselben Datensatzes angewiesen sind, bieten Transformationen eine effiziente Methode zur Erstellung und Verwaltung zahlreicher Dashboards.

Sie können die Ausgabe einer Transformation auch als Eingabe für eine andere Transformation verwenden, was zu einer Leistungssteigerung führt.

**Anmerkung**  
Manchmal kann das System transformierte Daten nicht grafisch darstellen. Wenn das passiert, klicken Sie auf den Schalter **Tabellenansicht** über der Visualisierung, um zu einer Tabellenansicht der Daten zu wechseln. Dies kann Ihnen helfen, das Endergebnis Ihrer Transformationen zu verstehen.

## Typen von Transformationen
<a name="v9-panels-xform-types"></a>

Grafana bietet eine Reihe von Möglichkeiten, wie Sie Daten transformieren können. Im Folgenden finden Sie eine vollständige Liste der Transformationsfunktionen.

## Reihenfolge der Transformationen
<a name="v9-panels-xform-order"></a>

Wenn es mehrere Transformationen gibt, wendet Grafana sie in der Reihenfolge an, in der sie aufgelistet sind. Jede Transformation erstellt eine Ergebnismenge, die dann an die nächste Transformation in der Verarbeitungspipeline weitergegeben wird.

Die Reihenfolge, in der Grafana Transformationen anwendet, wirkt sich direkt auf die Ergebnisse aus. Wenn Sie beispielsweise eine Reduce-Transformation verwenden, um alle Ergebnisse einer Spalte zu einem einzigen Wert zu verdichten, können Sie Transformationen nur auf diesen einzelnen Wert anwenden.

## Fügen Sie Daten eine Transformationsfunktion hinzu
<a name="v9-panels-xform-add"></a>

Die folgenden Schritte führen Sie durch das Hinzufügen einer Transformation zu Daten.

**Um eine Transformation zu einem Panel hinzuzufügen**

1. Navigieren Sie zu dem Bereich, in dem Sie eine oder mehrere Transformationen hinzufügen möchten.

1. Wählen Sie den Titel des Bedienfelds und klicken Sie dann auf **Bearbeiten**.

1. Wählen Sie die Registerkarte **Transform (Transformation)** aus.

1. Wählen Sie eine Transformation aus. Eine Transformationszeile wird angezeigt, in der Sie die Transformationsoptionen konfigurieren.

1. Um eine weitere Transformation anzuwenden, wählen Sie **Transformation hinzufügen**. Diese Transformation wirkt sich auf die Ergebnismenge aus, die von der vorherigen Transformation zurückgegeben wurde.

## Debuggen Sie eine Transformation
<a name="v9-panels-xform-debug"></a>

Um die Eingabe- und Ausgaberesultsets der Transformation zu sehen, wählen Sie das Bugsymbol auf der rechten Seite der Transformationszeile.

Die Eingabe- und Ausgabeergebnissätze können Ihnen beim Debuggen einer Transformation helfen.

## Löschen Sie eine Transformation
<a name="v9-panels-xform-delete"></a>

Wir empfehlen, Transformationen zu entfernen, die Sie nicht benötigen. Wenn Sie eine Transformation löschen, entfernen Sie die Daten aus der Visualisierung.

Voraussetzungen:

Identifizieren Sie alle Dashboards, die auf der Transformation basieren, und informieren Sie die betroffenen Dashboard-Benutzer.

**Um eine Transformation zu löschen**

1. Öffnen Sie ein Panel zur Bearbeitung.

1. Wählen Sie die Registerkarte **Transform (Transformation)** aus.

1. Wählen Sie das Papierkorbsymbol neben der Transformation, die Sie löschen möchten.

## Transformationsfunktionen
<a name="v9-panels-xform-functions"></a>

Sie können die folgenden Transformationen an Ihren Daten durchführen.

**Feld aus Berechnung hinzufügen**

Verwenden Sie diese Transformation, um ein neues Feld hinzuzufügen, das aus zwei anderen Feldern berechnet wurde. Mit jeder Transformation können Sie ein neues Feld hinzufügen.
+ **Modus** — Wählen Sie einen Modus aus:
  + **Zeile reduzieren** — Wendet die ausgewählte Formel unabhängig auf jede Zeile der ausgewählten Felder an.
  + **Binäre Option** — Wendet grundlegende mathematische Operationen (Summe, Multiplikation usw.) auf Werte in einer einzelnen Zeile aus zwei ausgewählten Feldern an.
+ **Feldname** — Wählen Sie die Namen der Felder aus, die Sie in der Berechnung für das neue Feld verwenden möchten.
+ **Berechnung** — Wenn Sie den Modus **Zeile reduzieren** wählen, wird das Feld **Formel** angezeigt. Klicken Sie in das Feld, um eine Liste der Berechnungsoptionen anzuzeigen, mit denen Sie das neue Feld erstellen können. Informationen zu verfügbaren Berechnungen finden Sie unter [Berechnungstypen](v9-panels-calculation-types.md).
+ **Operation** — Wenn Sie den Modus **Binäre Option** wählen, werden die Felder **Operation** angezeigt. Mit diesen Feldern können Sie grundlegende mathematische Operationen mit Werten in einer einzelnen Zeile aus zwei ausgewählten Feldern ausführen. Sie können numerische Werte auch für binäre Operationen verwenden.
+ **Alias** — (Optional) Geben Sie den Namen Ihres neuen Felds ein. Wenn Sie dieses Feld leer lassen, wird das Feld so benannt, dass es der Formel entspricht.
+ **Alle Felder ersetzen** — (Optional) Wählen Sie diese Option, wenn Sie alle anderen Felder ausblenden und nur Ihr berechnetes Feld in der Visualisierung anzeigen möchten.

**Verketten Sie Felder**

Diese Transformation kombiniert alle Felder aus allen Frames zu einem Ergebnis. Betrachten Sie diese beiden Abfragen.

Abfrage A:


| Temporäre Dateien | Betriebszeit | 
| --- | --- | 
|  15,4  |  1230233  | 

Anfrage B:


| AQI | Fehler | 
| --- | --- | 
|  3.2  |  5  | 

Nachdem Sie die Felder verkettet haben, würde der Datenrahmen wie folgt aussehen:


| Temporäre Dateien | Betriebszeit | AQI | Fehler | 
| --- | --- | --- | --- | 
|  15,4  |  1230233  |  3.2  |  5  | 

**Config aus Abfrageergebnissen**

Mit dieser Transformation können Sie eine Abfrage auswählen und daraus Standardoptionen wie **Min., **Max**.**, **Einheit** und **Schwellenwerte** extrahieren und auf andere Abfrageergebnisse anwenden. Dies ermöglicht eine dynamische, abfragegesteuerte Visualisierungskonfiguration.

Wenn Sie für jede Zeile im Ergebnis der Konfigurationsabfrage eine eindeutige Konfiguration extrahieren möchten, versuchen Sie es mit der Transformation von Zeilen in Felder.

**Optionen**
+ **Konfigurationsabfrage** — Wählen Sie die Abfrage aus, die die Daten zurückgibt, die Sie als Konfiguration verwenden möchten.
+ **Anwenden auf** — Wählen Sie aus, auf welche Felder oder Reihen die Konfiguration angewendet werden soll.
+ Auf **Optionen anwenden** — In der Regel ein regulärer Feldtyp oder ein Feldname, je nachdem, welche Option Sie unter **Anwenden** auf ausgewählt haben.

**Feldtyp konvertieren**

Diese Transformation ändert den Feldtyp des angegebenen Felds.
+ **Feld** — Wählen Sie aus verfügbaren Feldern aus
+ **als** — Wählen Sie das aus, in das FieldType konvertiert werden soll
  + **Numerisch** — versucht, die Werte zu Zahlen zu machen
  + **Zeichenfolge** — macht die Werte zu Zeichenketten
  + **Zeit** — versucht, die Werte als Zeit zu analysieren
    + Zeigt eine Option an, um a DateFormat als Eingabe mit einer Zeichenfolge wie yyyy-mm-dd oder DD MM YYYY hh:mm:ss anzugeben
  + Boolean — macht die Werte zu **Boolean**

Beispielsweise könnte die folgende Abfrage geändert werden, indem das Zeitfeld als Uhrzeit und das Datumsformat als YYYY ausgewählt wird.


| Zeit | Markieren | Wert | 
| --- | --- | --- | 
|  1.7.2017  |  über  |  25  | 
|  8/2/2018  |  unten  |  22  | 
|  9/2/2019  |  unten  |  29  | 
|  4.10.2020  |  über  |  22  | 

Das Ergebnis:


| Zeit | Mark | Wert | 
| --- | --- | --- | 
|  1.1.2017  |  über  |  25  | 
|  1.1.2018  |  unten  |  22  | 
|  1.1.2019  |  unten  |  29  | 
|  1.1.2020  |  über  |  22  | 

**Daten nach Namen filtern**

Verwenden Sie diese Transformation, um Teile der Abfrageergebnisse zu entfernen.

Grafana zeigt das Feld **Identifier** an, gefolgt von den Feldern, die von Ihrer Abfrage zurückgegeben wurden.

Sie können Filter auf zwei Arten anwenden:
+ Geben Sie einen Regex-Ausdruck ein.
+ Wählen Sie ein Feld aus, um die Filterung für dieses Feld umzuschalten. Gefilterte Felder werden mit dunkelgrauem Text angezeigt, ungefilterte Felder haben weißen Text.

**Daten nach Abfragen filtern**

Verwenden Sie diese Transformation in Bedienfeldern mit mehreren Abfragen, wenn Sie eine oder mehrere Abfragen ausblenden möchten.

Grafana zeigt die Abfrage-Identifikationsbuchstaben in dunkelgrauem Text an. Klicken Sie auf eine Abfrage-ID, um die Filterung umzuschalten. Wenn der Abfragebuchstabe weiß ist, werden die Ergebnisse angezeigt. Wenn der Abfragebuchstabe dunkel ist, sind die Ergebnisse ausgeblendet.

**Anmerkung**  
Diese Transformation ist für Graphite nicht verfügbar, da diese Datenquelle die Korrelation zurückgegebener Daten mit Abfragen nicht unterstützt.

**Daten nach Wert filtern**

Diese Transformation ermöglicht es Ihnen, Ihre Daten direkt in Grafana zu filtern und einige Datenpunkte aus Ihrem Abfrageergebnis zu entfernen. Sie haben die Möglichkeit, Daten ein- oder auszuschließen, die einer oder mehreren von Ihnen definierten Bedingungen entsprechen. Die Bedingungen werden auf ein ausgewähltes Feld angewendet.

Diese Transformation ist nützlich, wenn Ihre Datenquelle nicht nativ nach Werten filtert. Sie können dies auch verwenden, um die anzuzeigenden Werte einzugrenzen, wenn Sie eine gemeinsam genutzte Abfrage verwenden.

Die verfügbaren Bedingungen für alle Felder sind:
+ **Regex — Entspricht** einem Regex-Ausdruck
+ **Ist Null — Stimmt** überein, wenn der Wert Null ist
+ **Ist nicht Null** — Stimmt überein, wenn der Wert nicht Null ist
+ **Gleich — Entspricht**, wenn der Wert dem angegebenen Wert entspricht
+ **Anders** — entspricht, wenn der Wert vom angegebenen Wert abweicht

Die verfügbaren Bedingungen für Zahlenfelder sind:
+ **Größer** — Entspricht, wenn der Wert größer als der angegebene Wert ist
+ **Niedriger** — Entspricht, wenn der Wert niedriger als der angegebene Wert ist
+ **Größer oder gleich — Entspricht**, wenn der Wert größer oder gleich ist
+ **Niedriger oder gleich — Entspricht**, wenn der Wert niedriger oder gleich ist
+ **Bereich** — Entspricht einem Bereich zwischen einem bestimmten Minimum und Maximum, einschließlich Mindest- und Höchstwert

Betrachten Sie den folgenden Datensatz:


| Zeit | Temperatur | Höhe | 
| --- | --- | --- | 
|  07.07.2020 11:34:23 UHR  |  32  |  101  | 
|  07.07.2020 11:34:22 UHR  |  28  |  125  | 
|  07.07.2020 11:34:21 UHR  |  26  |  110  | 
|  07.07.2020 11:34:20 UHR  |  23  |  98  | 
|  07.07.2020 10:32:24 UHR  |  31  |  95  | 
|  07.07.2020 10:31:22 UHR  |  20  |  85  | 
|  07.07.2020 09:30:57 UHR  |  19  |  101  | 

Wenn Sie die Datenpunkte mit einer Temperatur unter 30 °C **einbeziehen**, sieht die Konfiguration wie folgt aus:
+ **Filtertyp** — `Include`
+ **Bedingung** — Zeilen mit `Temperature` Übereinstimmungen `Lower Than 30`

Und Sie erhalten das folgende Ergebnis, bei dem nur die Temperaturen unter 30 °C berücksichtigt werden:


| Zeit | Temperatur | Höhe | 
| --- | --- | --- | 
|  07.07.2020 11:34:22 UHR  |  28  |  125  | 
|  07.07.2020 11:34:21 UHR  |  26  |  110  | 
|  07.07.2020 11:34:20 UHR  |  23  |  98  | 
|  07.07.2020 10:31:22 UHR  |  20  |  85  | 
|  07.07.2020 09:30:57 UHR  |  19  |  101  | 

Sie können dem Filter mehr als eine Bedingung hinzufügen. Möglicherweise möchten Sie die Daten nur einbeziehen, wenn die Höhe größer als 100 ist. Fügen Sie dazu diese Bedingung der folgenden Konfiguration hinzu:
+ Filtertyp — `Include` Zeilen, die `Match All` Bedingungen erfüllen
+ Bedingung 1 — Zeilen, in denen `Temperature` Übereinstimmungen `Lower` mit `30`
+ Bedingung 2 — Zeilen, in denen `Altitude` Übereinstimmungen `Greater` mit `100`

Wenn Sie mehr als eine Bedingung haben, können Sie wählen, ob die Aktion (Einschließen/Ausschließen) auf Zeilen angewendet werden soll, die **allen Bedingungen **entsprechen**** oder einer der von Ihnen hinzugefügten Bedingungen entsprechen.

Im obigen Beispiel haben wir **Match All** ausgewählt, weil wir die Zeilen mit einer Temperatur unter 30 UND einer Höhe über 100 einbeziehen wollten. Wenn wir stattdessen die Zeilen mit einer Temperatur unter 30 ODER einer Höhe von über 100 einbeziehen wollten, würden wir **Match any** auswählen. Dies würde die erste Zeile in den Originaldaten einschließen, die eine Temperatur von 32 °C hat (entspricht nicht der ersten Bedingung), aber eine Höhe von 101 (was der zweiten Bedingung entspricht), also ist sie enthalten.

Bedingungen, die ungültig oder unvollständig konfiguriert sind, werden ignoriert.

**Group by** (Gruppierung nach)

Diese Transformation gruppiert die Daten nach einem bestimmten Feldwert (Spaltenwert) und verarbeitet Berechnungen für jede Gruppe. Klicken Sie hier, um eine Liste mit Berechnungsoptionen anzuzeigen.

Hier ist ein Beispiel für Originaldaten.


| Zeit | Server ID | CPU-Temperatur | Status des Servers | 
| --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server 1  |  80  |  Herunterfahren  | 
|  07.07.2020 11:34:20 UHR  |  Server 3  |  62  |  OK  | 
|  07.07.2020 10:32:20 UHR  |  Server 2  |  90  |  Überlastung  | 
|  07.07.2020 10:31:22 UHR  |  Server 3  |  55  |  OK  | 
|  07.07.2020 9:30:57 UHR  |  Server 3  |  62  |  Rebooting  | 
|  07.07.2020 9:30:05 UHR  |  Server 2  |  88  |  OK  | 
|  07.07.2020 9:28:06 UHR  |  Server 1  |  80  |  OK  | 
|  07.07.2020 9:25:05 UHR  |  Server 2  |  88  |  OK  | 
|  07.07.2020 9:23:07 UHR  |  Server 1  |  86  |  OK  | 

Diese Transformation erfolgt in zwei Schritten. Zuerst geben Sie ein oder mehrere Felder an, nach denen die Daten gruppiert werden sollen. Dadurch werden dieselben Werte dieser Felder gruppiert, als ob Sie sie sortiert hätten. Wenn wir beispielsweise nach dem Server-ID-Feld gruppieren, würden die Daten wie folgt gruppiert:


| Zeit | Server ID | CPU-Temperatur | Status des Servers | 
| --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server 1  |  80  |  Herunterfahren  | 
|  07.07.2020 9:28:06 UHR  |  Server 1  |  80  |  OK  | 
|  07.07.2020 9:23:07 UHR  |  Server 1  |  86  |  OK  | 
|  07.07.2020 10:32:20 UHR  |  Server 2  |  90  |  Überlastung  | 
|  07.07.2020 9:30:05 UHR  |  Server 2  |  88  |  OK  | 
|  07.07.2020 9:25:05 UHR  |  Server 2  |  88  |  OK  | 
|  07.07.2020 11:34:20 UHR  |  Server 3  |  62  |  OK  | 
|  07.07.2020 10:31:22 UHR  |  Server 3  |  55  |  OK  | 
|  07.07.2020 9:30:57 UHR  |  Server 3  |  62  |  Rebooting  | 

Alle Zeilen mit demselben Wert für die Server-ID werden gruppiert.

Nachdem Sie ausgewählt haben, nach welchem Feld Sie Ihre Daten gruppieren möchten, können Sie verschiedene Berechnungen für die anderen Felder hinzufügen und die Berechnung auf jede Zeilengruppe anwenden. Wir könnten zum Beispiel die durchschnittliche CPU-Temperatur für jeden dieser Server berechnen wollen. Wir können also die *Mittelwertberechnung* hinzufügen, die auf das Feld CPU-Temperatur angewendet wird, um Folgendes zu erhalten:


| Server ID | CPU-Temperatur (Mittelwert) | 
| --- | --- | 
|  Server 1  |  82  | 
|  Server 2  |  88,6  | 
|  Server 3  |  59,6  | 

Und wir können mehr als eine Berechnung hinzufügen. Zum Beispiel:
+ Für das Feld Time können wir den *letzten* Wert berechnen, um zu wissen, wann der letzte Datenpunkt für jeden Server empfangen wurde
+ Für das Feld Serverstatus können wir den *letzten* Wert berechnen, um den letzten Statuswert für jeden Server zu ermitteln
+ Für das Feld Temperatur können wir auch den *letzten* Wert berechnen, um zu erfahren, welche Temperatur für jeden Server zuletzt überwacht wurde

Wir würden dann erhalten:


| Server ID | CPU-Temperatur (Mittelwert) | CPU-Temperatur (letzte) | Zeit (letzte) | Serverstatus (zuletzt) | 
| --- | --- | --- | --- | --- | 
|  Server 1  |  82  |  80  |  07.07.2020 11:34:20 UHR  |  Herunterfahren  | 
|  Server 2  |  88,6  |  90  |  07.07.2020 10:32:20 UHR  |  Überlastung  | 
|  Server 3  |  59,6  |  62  |  07.07.2020 11:34:20 UHR  |  OK  | 

Diese Transformation ermöglicht es Ihnen, wichtige Informationen aus Ihrer Zeitreihe zu extrahieren und sie auf bequeme Weise anzuzeigen.

**Nach Feld verbinden**

Verwenden Sie diese Transformation, um mehrere Ergebnisse zu einer einzigen Tabelle zusammenzuführen. Dies ist besonders nützlich, wenn Sie mehrere Zeitreihenergebnisse in eine einzige große Tabelle mit einem gemeinsamen Zeitfeld konvertieren möchten.

*Innere Verbindung*

Bei einer inneren Verknüpfung werden Daten aus mehreren Tabellen zusammengeführt, wobei alle Tabellen denselben Wert aus dem ausgewählten Feld haben. Diese Art der Verknüpfung schließt Daten aus, bei denen die Werte nicht in jedem Ergebnis übereinstimmen.

Verwenden Sie diese Transformation, um die Ergebnisse mehrerer Abfragen (Kombination aus einem übergebenen Join-Feld oder der ersten Zeitspalte) zu einem Ergebnis zu kombinieren und Zeilen zu löschen, in denen eine erfolgreiche Verknüpfung nicht möglich ist.

Im folgenden Beispiel geben zwei Abfragen Tabellendaten zurück. Es wird als zwei separate Tabellen visualisiert, bevor die innere Join-Transformation angewendet wird.

Abfrage A:


| Zeit | Aufgabe | Betriebszeit | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  node  |  25260122  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  123001233  | 
|  07.07.2020 11:14:20 UHR  |  Postfach  |  345001233  | 

Anfrage B:


| Zeit | Server | Fehler | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server 1  |  15  | 
|  07.07.2020 11:24:20 UHR  |  Server 2  |  5  | 
|  07.07.2020 11:04:20 UHR  |  Server 3  |  10  | 

Das Ergebnis nach der Anwendung der inneren Join-Transformation sieht wie folgt aus:


| Zeit | Aufgabe | Betriebszeit | Server | Fehler | 
| --- | --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  node  |  25260122  |  Server 1  |  15  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  123001233  |  Server 2  |  5  | 

*Äußere Verbindung*

Ein äußerer Join umfasst alle Daten aus einem inneren Join und Zeilen, in denen die Werte nicht in jeder Eingabe übereinstimmen. Während die innere Verknüpfung Abfrage A und Abfrage B im Zeitfeld verknüpft, umfasst die äußere Verknüpfung alle Zeilen, die im Zeitfeld nicht übereinstimmen.

Im folgenden Beispiel geben zwei Abfragen Tabellendaten zurück. Es wird als zwei Tabellen visualisiert, bevor die Outer-Join-Transformation angewendet wird.

Abfrage A:


| Zeit | Aufgabe | Betriebszeit | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  node  |  25260122  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  123001233  | 
|  07.07.2020 11:14:20 UHR  |  Postfach  |  345001233  | 

Anfrage B:


| Zeit | Server | Fehler | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server 1  |  15  | 
|  07.07.2020 11:24:20 UHR  |  Server 2  |  5  | 
|  07.07.2020 11:04:20 UHR  |  Server 3  |  10  | 

Das Ergebnis nach der Anwendung der Outer-Join-Transformation sieht wie folgt aus:


| Zeit | Aufgabe | Betriebszeit | Server | Fehler | 
| --- | --- | --- | --- | --- | 
|  07.07.2020 11:04:20 UHR  |    |    |  Server 3  |  10  | 
|  07.07.2020 11:14:20 UHR  |  Postfach  |  345001233  |    |    | 
|  07.07.2020 11:34:20 UHR  |  node  |  25260122  |  Server 1  |  15  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  123001233  |  Server 2  |  5  | 

**Beschriftungen für Felder**

Durch diese Transformation werden Zeitreihenergebnisse, die Beschriftungen oder Tags enthalten, in eine Tabelle umgewandelt, in der alle Labelschlüssel und -werte im Tabellenergebnis enthalten sind. Die Beschriftungen können entweder als Spalten- oder als Zeilenwerte angezeigt werden.

Bei einem Abfrageergebnis aus zwei Zeitreihen:
+ Serie 1 — Beschriftungen Server=Server A, DataCenter=EU
+ Serie 2 — Bezeichnungen Server=Server B, DataCenter=EU

Im **Spaltenmodus sieht** das Ergebnis wie folgt aus:


| Zeit | Server | Rechenzentrum | Wert | 
| --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server A  |  EU  |  1  | 
|  07.07.2020 11:34:20 UHR  |  Server B  |  EU  |  2  | 

Im Modus „Zeilen“ enthält das Ergebnis eine Tabelle für jede Reihe und zeigt jeden Labelwert wie folgt an:


| Bezeichnung | value | 
| --- | --- | 
|  Server  |  Server A  | 
|  Rechenzentrum  |  EU  | 


| Bezeichnung | value | 
| --- | --- | 
|  Server  |  Server B  | 
|  Rechenzentrum  |  EU  | 

*Name des Wertefeldes*

Wenn Sie Server als **Namen für das Wertfeld** ausgewählt haben, erhalten Sie für jeden Wert der Serverbezeichnung ein Feld.


| Zeit | Rechenzentrum | Server A | Server B | 
| --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  EU  |  1  |  2  | 

*Verhalten beim Zusammenführen*

Der Transformator „Labels to Fields“ besteht intern aus zwei getrennten Transformationen. Die erste Methode bezieht sich auf einzelne Datenreihen und extrahiert Beschriftungen in Felder. Die zweite ist die Zusammenführungstransformation, die alle Ergebnisse in einer einzigen Tabelle zusammenfasst. Die Zusammenführungstransformation versucht, alle übereinstimmenden Felder zu verknüpfen. Dieser Zusammenführungsschritt ist erforderlich und kann nicht deaktiviert werden. 

**Anmerkung**  
Die Transformation zum *Zusammenführen* kann eigenständig verwendet werden und wird im Folgenden ausführlich beschrieben.

Um dies zu veranschaulichen, finden Sie hier ein Beispiel mit zwei Abfragen, die Zeitreihen ohne überlappende Beschriftungen zurückgeben.
+ Serie 1 — Labels Server=ServerA
+ Serie 2 — Labels DataCenter=EU

Dies wird zunächst zu diesen beiden Tabellen führen:


| Zeit | Server | Wert | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server A  |  10  | 


| Zeit | Rechenzentrum | Wert | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  EU  |  20  | 

Nach der Zusammenführung:


| Zeit | Server | Wert | Rechenzentrum | 
| --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Server A  |  10  |    | 
|  07.07.2020 11:34:20 UHR  |    |  20  |  EU  | 

**Mischen von**

Verwenden Sie diese Transformation, um das Ergebnis mehrerer Abfragen zu einem einzigen Ergebnis zu kombinieren. Dies ist hilfreich, wenn Sie die Tabellenfenster-Visualisierung verwenden. Werte, die zusammengeführt werden können, werden in derselben Zeile zusammengefasst. Werte können zusammengeführt werden, wenn die gemeinsam genutzten Felder dieselben Daten enthalten.

Im folgenden Beispiel haben wir zwei Abfragen, die Tabellendaten zurückgeben. Es wird als zwei separate Tabellen visualisiert, bevor die Transformation angewendet wird.

Abfrage A:


| Zeit | Aufgabe | Betriebszeit | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  node  |  25260122  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  123001233  | 

Anfrage B:


| Zeit | Aufgabe | Fehler | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  node  |  15  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  5  | 

Hier ist das Ergebnis nach der Anwendung der Merge-Transformation:


| Zeit | Aufgabe | Fehler | Betriebszeit | 
| --- | --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  node  |  15  |  25260122  | 
|  07.07.2020 11:24:20 UHR  |  Postfach  |  5  |  123001233  | 

**Organisieren Sie Felder**

Verwenden Sie diese Transformation, um die von der Abfrage zurückgegebenen Felder umzubenennen, neu anzuordnen oder auszublenden.

**Anmerkung**  
Diese Transformation funktioniert nur in Panels mit einer einzigen Abfrage. Wenn Ihr Panel über mehrere Abfragen verfügt, müssen Sie entweder eine Outer Join-Transformation anwenden oder die zusätzlichen Abfragen entfernen.

Grafana zeigt eine Liste der Felder an, die von der Abfrage zurückgegeben wurden. Sie können:
+ Ändern Sie die Reihenfolge der Felder, indem Sie den Mauszeiger über ein Feld bewegen. Der Cursor verwandelt sich in eine Hand, und dann können Sie das Feld an die neue Position ziehen.
+ Ein Feld ein- oder ausblenden, indem Sie auf das Augensymbol neben dem Feldnamen klicken.
+ Benennen Sie Felder um, indem Sie einen neuen Namen in das Feld Umbenennen eingeben.

**Partitionierung nach Werten**

Diese Transformation kann dazu beitragen, dass bei der grafischen Darstellung mehrerer Reihen nicht mehrere Abfragen an dieselbe Datenquelle mit unterschiedlichen `WHERE` Klauseln erforderlich sind. Stellen Sie sich eine SQL-Tabelle mit Metriken mit den folgenden Daten vor:


| Zeit | Region | Wert | 
| --- | --- | --- | 
|  20.10.2022 12:00:00 UHR  |  US  |  1520  | 
|  20.10.2022 12:00:00 UHR  |  EU  |  2936  | 
|  20.10.2022 01:00:00 UHR  |  US  |  1327  | 
|  20.10.2022 01:00:00 UHR  |  EU  |  912  | 

Wenn Sie vor Version 9.3 im selben TimeSeries Panel eine rote Trendlinie für die USA und eine blaue Trendlinie für die EU zeichnen wollten, mussten Sie dies wahrscheinlich in zwei Abfragen aufteilen:

```
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='US'
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='EU'
```

Dazu müssen Sie auch im Voraus wissen, welche Regionen tatsächlich in der Metriktabelle enthalten sind.

Mit dem Transformator „*Nach Werten partitionieren*“ können Sie jetzt eine einzelne Abfrage ausführen und die Ergebnisse nach eindeutigen Werten in einer oder mehreren Spalten (`fields`) Ihrer Wahl aufteilen. Im folgenden Beispiel wird `Region` verwendet.

```
SELECT Time, Region, Value FROM metrics WHERE Time > '2022-10-20'
```


| Zeit | Region | Wert | 
| --- | --- | --- | 
|  20.10.2022 12:00:00 UHR  |  US  |  1520  | 
|  20.10.2022 01:00:00 UHR  |  US  |  1327  | 


| Zeit | Region | Wert | 
| --- | --- | --- | 
|  20.10.2022 12:00:00 UHR  |  EU  |  2936  | 
|  20.10.2022 01:00:00 UHR  |  EU  |  912  | 

**Reduzieren**

Die Transformation zum *Reduzieren* wendet eine Berechnung auf jedes Feld im Frame an und gibt einen einzelnen Wert zurück. Zeitfelder werden entfernt, wenn diese Transformation angewendet wird.

Betrachten Sie die Eingabe:

Abfrage A:


| Zeit | Temporäre Dateien | Betriebszeit | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  12.3  |  256122  | 
|  07.07.2020 11:24:20 UHR  |  15,4  |  1230233  | 

Anfrage B:


| Zeit | AQI | Fehler | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  6,5  |  15  | 
|  07.07.2020 11:24:20 UHR  |  3.2  |  5  | 

Der Reduktionstransformator hat zwei Modi:
+ **Reihe zu Zeilen** — Erstellt eine Zeile für jedes Feld und eine Spalte für jede Berechnung.
+ **Felder reduzieren** — Behält die bestehende Rahmenstruktur bei, reduziert jedoch jedes Feld auf einen einzigen Wert.

Wenn Sie beispielsweise die **erste** und **letzte** Berechnung mit einer Transformation von **Datenreihen in Zeilen** verwenden würden, wäre das Ergebnis:


| Feld | Erste | Letzte | 
| --- | --- | --- | 
|  Temporäre Dateien  |  12.3  |  15.4  | 
|  Betriebszeit  |  256122  |  1230233  | 
|  AQI  |  6,5  |  3.2  | 
|  Fehler  |  15  |  5  | 

Die Formel Felder mit der letzten Option reduzieren ergibt zwei Frames mit jeweils einer Zeile:

Abfrage A:


| Temporäre Dateien | Betriebszeit | 
| --- | --- | 
|  15,4  |  1230233  | 

Anfrage B:


| AQI | Fehler | 
| --- | --- | 
|  3.2  |  5  | 

**Mit Regex umbenennen**

Verwenden Sie diese Transformation, um Teile der Abfrageergebnisse mithilfe eines regulären Ausdrucks und eines Ersatzmusters umzubenennen.

Sie können einen regulären Ausdruck angeben, der nur auf Treffer angewendet wird, sowie ein Ersatzmuster, das Rückverweise unterstützt. Stellen wir uns zum Beispiel vor, Sie visualisieren die CPU-Auslastung pro Host und möchten den Domainnamen entfernen. Sie könnten die Regex auf setzen `([^\.]+)\..+` und das Ersatzmuster auf`$1`, `web-01.example.com` würde werden. `web-01`

**Zeilen zu Feldern**

Die Transformation von Zeilen in Felder konvertiert Zeilen in separate Felder. Dies kann nützlich sein, da Felder individuell gestaltet und konfiguriert werden können. Es kann auch zusätzliche Felder als Quellen für die dynamische Feldkonfiguration verwenden oder sie Feldbeschriftungen zuordnen. Die zusätzlichen Beschriftungen können dann verwendet werden, um bessere Anzeigenamen für die resultierenden Felder zu definieren.

Diese Transformation umfasst eine Feldtabelle, die alle Felder in den von der Konfigurationsabfrage zurückgegebenen Daten auflistet. Diese Tabelle gibt Ihnen die Kontrolle darüber, welches Feld jeder Konfigurationseigenschaft zugeordnet werden soll (die Option \$1Verwenden als\$1\$1). Sie können auch wählen, welcher Wert ausgewählt werden soll, wenn die zurückgegebenen Daten mehrere Zeilen enthalten.

Diese Transformation erfordert:
+ Ein Feld, das als Quelle für Feldnamen verwendet werden soll.

  Standardmäßig verwendet die Transformation das erste Zeichenkettenfeld als Quelle. Sie können diese Standardeinstellung überschreiben, indem Sie **Feldname** in der Spalte **Verwenden als** für das Feld auswählen, das Sie stattdessen verwenden möchten.
+ Ein Feld, das als Wertequelle verwendet werden soll.

  Standardmäßig verwendet die Transformation das erste Zahlenfeld als Quelle. Sie können diese Standardeinstellung jedoch überschreiben, indem Sie in der Spalte **Als verwenden** für das **Feld, das Sie stattdessen verwenden möchten, die Option Feldwert** auswählen.

Nützlich bei der Visualisierung von Daten in:
+ Messinstrument
+ Stat
+ Kreisdiagramm

*Ordnen Sie zusätzliche Felder Beschriftungen zu*

Wenn ein Feld nicht der Konfigurationseigenschaft zugeordnet ist, verwendet Grafana es automatisch als Quelle für ein Label im Ausgabefeld-

Beispiel:


| Name | DataCenter | Wert | 
| --- | --- | --- | 
|  ServerA  |  US  |  100  | 
|  Server B  |  EU  |  200  | 

Ausgabe:


| ServerA (Bezeichnungen DataCenter: US) | ServerB (Etiketten: DataCenter: EU) | 
| --- | --- | 
|  10  |  20  | 

Die zusätzlichen Beschriftungen können jetzt im Feld Anzeigename verwendet werden, um vollständigere Feldnamen bereitzustellen.

Wenn Sie die Konfiguration aus einer Abfrage extrahieren und auf eine andere anwenden möchten, sollten Sie die Konfiguration aus der Transformation der Abfrageergebnisse verwenden.

*Beispiel*

Eingabe:


| Name | Wert | Max | 
| --- | --- | --- | 
|  Server A  |  10  |  100  | 
|  Server B  |  20  |  200  | 
|  Server C  |  30  |  300  | 

Ausgabe:


| ServerA (Konfiguration: max=100) | ServerB (Konfiguration: max=200) | ServerC (Konfiguration: max=300) | 
| --- | --- | --- | 
|  10  |  20  |  30  | 

Wie Sie sehen können, wird jede Zeile in den Quelldaten zu einem separaten Feld. Für jedes Feld ist jetzt auch eine maximale Konfigurationsoption festgelegt. Optionen wie Min., Max., Einheit und Schwellenwerte sind alle Teil der Feldkonfiguration. Wenn sie so eingestellt sind, werden sie von der Visualisierung anstelle von Optionen verwendet, die manuell im Optionsbereich des Panel-Editors konfiguriert wurden.

**Bereiten Sie Zeitreihen vor**

Die Zeitreihentransformation vorbereiten ist nützlich, wenn eine Datenquelle Zeitreihendaten in einem Format zurückgibt, das von dem Panel, das Sie verwenden möchten, nicht unterstützt wird.

Diese Transformation hilft Ihnen, dieses Problem zu lösen, indem Sie die Zeitreihendaten entweder vom Breitformat in das Langformat oder umgekehrt konvertieren.

Wählen Sie die Option „**Zeitreihen mit mehreren Frames**“, um den Zeitreihendatenrahmen vom Breitformat in das Langformat umzuwandeln.

Wählen Sie die Option **Breite Zeitreihe**, um den Zeitreihen-Datenrahmen vom Langformat in das Breitformat umzuwandeln.

**Reihe in Zeilen**

Verwenden Sie diese Transformation, um das Ergebnis mehrerer Zeitreihen-Datenabfragen zu einem einzigen Ergebnis zu kombinieren. Dies ist hilfreich, wenn Sie die Tabellenfenster-Visualisierung verwenden.

Das Ergebnis dieser Transformation wird drei Spalten enthalten: Zeit, Metrik und Wert. Die Spalte Metrik wurde hinzugefügt, sodass Sie leicht erkennen können, aus welcher Abfrage die Metrik stammt. Passen Sie diesen Wert an, indem Sie Label in der Quellabfrage definieren.

Im folgenden Beispiel haben wir zwei Abfragen, die Zeitreihendaten zurückgeben. Es wird als zwei separate Tabellen visualisiert, bevor die Transformation angewendet wird.

Abfrage A:


| Zeit | Temperatur | 
| --- | --- | 
|  07.07.2020 11:34:20 UHR  |  25  | 
|  07.07.2020 10:31:22 UHR  |  22  | 
|  07.07.2020 09:30:05 UHR  |  19  | 

Anfrage B:


| Zeit | Feuchte | 
| --- | --- | 
|  07.07.2020 11:34:20 UHR  |  24  | 
|  07.07.2020 10:32:20 UHR  |  29  | 
|  07.07.2020 09:30:57 UHR  |  33  | 

Hier ist das Ergebnis nach der Anwendung der Transformation „Serie auf Zeilen“.


| Zeit | Metrik | Wert | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Temperatur  |  25  | 
|  07.07.2020 11:34:20 UHR  |  Luftfeuchtigkeit  |  22  | 
|  07.07.2020 10:32:20 UHR  |  Feuchtigkeit  |  29  | 
|  07.07.2020 10:31:22 UHR  |  Temperatur  |  22  | 
|  07.07.2020 09:30:57 UHR  |  Luftfeuchtigkeit  |  33  | 
|  07.07.2020 9:30:05 UHR  |  Temperatur  |  19  | 

**Sortiere nach**

Diese Transformation sortiert jeden Frame nach dem konfigurierten Feld. Wenn diese Option aktiviert `reverse` ist, werden die Werte in umgekehrter Reihenfolge zurückgegeben.

**Limit**

Verwenden Sie diese Transformation, um die Anzahl der angezeigten Zeilen zu begrenzen.

Im folgenden Beispiel haben wir die folgende Antwort von der Datenquelle:


| Zeit | Metrik | Wert | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Temperatur  |  25  | 
|  07.07.2020 11:34:20 UHR  |  Luftfeuchtigkeit  |  22  | 
|  07.07.2020 10:32:20 UHR  |  Feuchtigkeit  |  29  | 
|  07.07.2020 10:31:22 UHR  |  Temperatur  |  22  | 
|  07.07.2020 09:30:57 UHR  |  Luftfeuchtigkeit  |  33  | 
|  07.07.2020 9:30:05 UHR  |  Temperatur  |  19  | 

Hier ist das Ergebnis nach dem Hinzufügen einer Limit-Transformation mit dem Wert '3':


| Zeit | Metrik | Wert | 
| --- | --- | --- | 
|  07.07.2020 11:34:20 UHR  |  Temperatur  |  25  | 
|  07.07.2020 11:34:20 UHR  |  Luftfeuchtigkeit  |  22  | 
|  07.07.2020 10:32:20 UHR  |  Feuchtigkeit  |  29  | 

# Problembehandlung bei Abfragen
<a name="v9-panels-query-troubleshoot"></a>

****  
Dieses Dokumentationsthema wurde für Grafana-Workspaces entwickelt, die **Grafana-Version 9.x** unterstützen.  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 10.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 10](using-grafana-v10.md)  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 8](using-grafana-v8.md)

Diese Seite enthält Informationen zur Lösung häufig auftretender Dashboard-Probleme.

**Ich erhalte unterschiedliche Ergebnisse, wenn ich meine Funktionen neu anordne**

Die Reihenfolge der Funktionen ist sehr wichtig. Genau wie in der Mathematik kann die Reihenfolge, in der Sie Ihre Funktionen platzieren, das Ergebnis beeinflussen.

**Prüfen Sie Ihre Anfrage und Antwort**

Die häufigsten Probleme hängen mit der Abfrage und der Antwort aus Ihrer Datenquelle zusammen. Auch wenn es in Grafana nach einem Bug oder Visualisierungsproblem aussieht, handelt es sich fast immer um ein Problem mit der Datenquellenabfrage oder der Datenquellenantwort. Überprüfen Sie zunächst Ihre Panel-Anfrage und -Antwort.

Weitere Informationen finden Sie unter [Anfrage- und Antwortdaten überprüfen](v9-panels-panel-inspector.md).

**Meine Abfrage ist langsam**

Wie viele Datenpunkte gibt Ihre Abfrage zurück? Eine Abfrage, die viele Datenpunkte zurückgibt, ist langsam. Versuche das:
+ Begrenzen Sie in den **Abfrageoptionen** die **maximale Anzahl der zurückgegebenen Datenpunkte**.
+ Erhöhen Sie in den **Abfrageoptionen** die **Mindestintervallzeit**.
+ Verwenden Sie in Ihrer Abfrage eine `group by` Funktion.