

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.

# Stellen Sie eine Connect zu einer SAP HANA-Datenquelle her
<a name="saphana-AMG-datasource"></a>

[SAP HANA](https://www.sap.com/products/technology-platform/hana.html) ist eine leistungsstarke In-Memory-Datenbank, die datengestützte Entscheidungen und Aktionen in Echtzeit beschleunigt. Sie wird von SAP entwickelt und vermarktet. Das SAP HANA-Datenquellen-Plugin hilft Ihnen, Ihre SAP HANA-Instanz mit Grafana zu verbinden.

Mit dem SAP HANA Grafana Enterprise-Plugin können Sie Ihre SAP HANA-Daten zusammen mit all Ihren anderen Datenquellen in Grafana sowie Protokoll- und Metrikdaten im Kontext visualisieren. Dieses Plugin enthält einen integrierten Abfrage-Editor, unterstützt Anmerkungen und ermöglicht es Ihnen, Schwellenwerte für Warnmeldungen festzulegen, den Zugriff zu kontrollieren, Berechtigungen festzulegen und vieles mehr.

**Anmerkung**  
Diese Datenquelle ist nur für Grafana Enterprise bestimmt. Weitere Informationen finden Sie unter [Zugriff auf Enterprise-Plugins verwalten](upgrade-to-enterprise-plugins.md).  
In Workspaces, die Version 9 oder neuer unterstützen, müssen Sie für diese Datenquelle möglicherweise außerdem das entsprechende Plugin installieren. Weitere Informationen finden Sie unter [Erweitere deinen Workspace mit Plugins](grafana-plugins.md).

## Features
<a name="saphana-features"></a>
+ **Abfrageeditor** — Das Plugin verfügt über einen integrierten SQL-Abfrageeditor mit Syntaxhervorhebung, mit dem Sie Zeitreihen- oder Tabellendaten visualisieren und grundlegende Grafana-Makros auto vervollständigen können.
+ **Datenquellenberechtigungen** — Steuern Sie, wer SAP HANA-Daten in Grafana anzeigen oder abfragen kann.
+ **Anmerkungen** — Überlagern Sie SAP HANA-Ereignisse oder -Daten in einem beliebigen Grafana-Diagramm, um Ereignisse mit anderen Grafikdaten zu korrelieren.
+ **Warnmeldungen** — Legen Sie in SAP HANA fest, dass auf Alarmen basierende Kennzahlen gespeichert werden.
+ **Variablen für Abfragen** — Erstellen Sie in Grafana Vorlagenvariablen, die auf SAP HANA-Daten basieren, und schließen Sie Variablen in SAP HANA-Abfragen ein, um Dashboards interaktiv zu gestalten.

## Hinzufügen der Datenquelle
<a name="saphana-adding-the-data-source"></a>

1.  Öffnen Sie die Grafana-Konsole im Amazon Managed Grafana-Arbeitsbereich und stellen Sie sicher, dass Sie angemeldet sind. 

1.  Wählen Sie im Seitenmenü unter **Konfiguration** (das Zahnradsymbol) die Option **Datenquellen** aus. 

1.  Wählen Sie **Datenquelle hinzufügen** aus. 
**Anmerkung**  
 Wenn Sie den Link **Datenquellen** nicht in Ihrem Seitenmenü sehen, bedeutet dies, dass Ihr aktueller Benutzer die `Admin` Rolle nicht hat. 

1.  Wählen Sie **SAP HANA** aus der Liste der Datenquellen aus. 

1. Geben Sie im Config-Editor die folgenden Informationen ein:
   + Geben Sie für **Serveradresse** die Adresse der SAP HANA-Instanz an. Beispiel:`xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com`.
   + Geben Sie für **Serverport** den Port der SAP HANA-Instanz an.
   + Geben Sie **unter Benutzername** den Benutzernamen ein, der für die Verbindung mit der SAP HANA-Instanz verwendet werden soll.
   + Geben Sie unter **Passwort** das Passwort für diesen Benutzer ein.
   + (Optional) Aktivieren Sie „**TLS-Überprüfung überspringen**“, wenn Sie die TLS-Überprüfung überspringen möchten.
   + (Optional) Aktivieren Sie **TLS Client Auth**, wenn Sie ein Client-Zertifikat und einen Client-Schlüssel angeben müssen.
   + (Optional) Aktivieren Sie „**Mit CA-Zertifikat**“, wenn Sie die Überprüfung von selbstsignierten TLS-Zertifikaten aktivieren möchten.
   + (Optional) Geben Sie unter **Standardschema ein Standardschema** ein, das verwendet werden soll. Wenn Sie dies weglassen, müssen Sie das Schema in jeder Abfrage angeben. 

**Zugriff und Berechtigungen**

Verwenden Sie spezielle Anmeldeinformationen, um Grafana mit SAP HANA zu verbinden. Stellen Sie dem Benutzer nur die erforderlichen Berechtigungen zur Verfügung. Erstellen Sie zunächst einen eingeschränkten Benutzer mit Benutzername und Passwort. Die folgende Abfrage ist ein Beispiel für die Erstellung eines eingeschränkten Benutzers. Diese Abfrage deaktiviert auch die erzwungene Kennwortänderung.

```
CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD> NO FORCE_FIRST_PASSWORD_CHANGE;
```

Erlauben Sie dem Benutzer anschließend, das System über Clients wie Grafana wie folgt zu verbinden:

```
ALTER USER <USER> ENABLE CLIENT CONNECT;
```

Geben Sie dem Benutzer abschließend Zugriff auf die erforderlichen Ansichten, Tabellen und Schemas.

```
ALTER USER <USER> GRANT ROLE PUBLIC;
GRANT SELECT ON SCHEMA <SCHEMA> TO <USER>;
```

**Berechtigungen auf Benutzerebene**

Beschränken Sie den Zugriff auf SAP HANA, indem Sie auf der Datenquellenkonfigurationsseite auf die Registerkarte Berechtigungen klicken, um Datenquellenberechtigungen zu aktivieren. Auf der Berechtigungsseite können Administratoren Berechtigungen aktivieren und Abfrageberechtigungen auf bestimmte Benutzer und Teams beschränken.

## Abfrage-Editor
<a name="saphana-queryeditor"></a>

Das SAP HANA Grafana-Plugin enthält einen SQL-Abfrageeditor, in den Sie beliebige HANA-Abfragen eingeben können. Wenn Ihre Abfrage Zeitreihendaten zurückgibt, können Sie sie als Zeitreihen formatieren, um sie in einem Grafikfeld zu visualisieren. Der Abfrage-Editor bietet auto Vervollständigung für unterstützte Grafana-Makros und Syntaxhervorhebung Ihrer SQL-Abfrage.

## Anmerkungen
<a name="saphana-annotations"></a>

Sie können SAP HANA-Abfragen als Quellen für Grafana-Anmerkungen verwenden. Ihre Kommentarabfrage sollte mindestens eine Zeitspalte und eine Textspalte zurückgeben. Weitere Informationen zu Anmerkungen finden Sie unter[Anmerkungen](dashboard-annotations.md).

**Um Anmerkungen aus SAP HANA zu erstellen**

1.  Wählen Sie das Zahnradsymbol für die **Dashboard-Einstellungen**. 

1.  Wählen Sie im linken Menü **Anmerkungen**, **Neu** aus. 

1.  Wählen Sie im Dropdownmenü **Datenquelle** Ihre SAP HANA-Datenquelleninstanz aus. 

1.  Geben Sie im Feld **Abfrage** eine SAP HANA-Abfrage ein, die mindestens ein Zeitfeld und ein Textfeld zurückgibt. 

1.  Wählen Sie im Dropdownmenü **Format als** die Option **Zeitreihe** aus. 

1.  Konfigurieren Sie für jede Anmerkung die Felder **Von**. 

## Vorlagen und Variablen
<a name="saphana-templates"></a>

Informationen zum Hinzufügen einer neuen SAP HANA-Abfragevariablen finden Sie unter[Hinzufügen einer Abfragevariablen](variables-types.md#add-a-query-variable). Verwenden Sie Ihre SAP HANA-Datenquelle als Datenquelle.

Die folgende Beispielabfrage gibt die eindeutige Liste von `username` aus der `users` Tabelle zurück.

```
select distinct("username") from "users"
```

**Anmerkung**  
Achten Sie darauf, dass Sie in Ihrer Variablenabfrage nur eine Spalte auswählen. Wenn Ihre Abfrage zwei Spalten zurückgibt, wird die erste Spalte als Anzeigewert und die zweite Spalte als der tatsächliche Wert der Variablen verwendet. Wenn Ihre Abfrage mehr als zwei Spalten zurückgibt, werden sie zurückgewiesen.

### Vorlagen und Variablen
<a name="saphana-Grafana-variables"></a>

Sie können jede Grafana-Variable in Ihrer Abfrage verwenden. Die folgenden Beispiele zeigen, wie Sie die Einzel-/Mehrfachvariable in Ihrer Abfrage verwenden.

```
-- For example, following query
select * from "users" where "city" = ${city}
-- will be translated into
select * from "users" where "city" = 'london'
--- where you can see ${city} variable translated into actual value in the variable
```

Ähnlich wie Text funktionieren Variablen auch für numerische Felder. Im folgenden Beispiel `${age}` handelt es sich um eine Textfeldvariable, die Zahlen akzeptiert und dann mit dem numerischen Feld in der Tabelle vergleicht.

```
select * from "users" where "age" > ${age}
--- wil be translated into
select * from "users" where "age" > '36'
```

Wenn Ihre Variable mehrere Werte zurückgibt, können Sie sie wie folgt in der `in` Bedingung der SAP HANA-Abfrage verwenden. Beachten Sie die Klammern, die die Variable umgeben, damit die `where in` Bedingung in SAP HANA gültig ist.

```
select * from "users" where "city" in (${cities})
--- will be translated into
select * from "users" where "city" in ('london','perth','delhi')
--- where you can see ${cities} turned into a list of grafana variables selected.
--- You can also write the same query using shorthand notation as shown below
select * from "users" where "city" in ($cities)
```

### Makros
<a name="saphana-macros"></a>
+ `$__timeFilter(<time_column>)`— Wendet den Zeitraum von Grafana auf die angegebene Spalte an, wenn er in der Rohabfrage verwendet wird. Gilt für date/timestamp/long Zeitspalten.
+ `$__timeFilter(<time_column>, <format>)`— Wie oben. Bietet jedoch die Möglichkeit, das Format der in der Datenbank gespeicherten time\$1column anzugeben.
+ `$__timeFilter(<time_column>, "epoch", <format>)`— Wie oben, kann aber verwendet werden, wenn sich Ihre Zeitspalte in der Epoche befindet. Das Format kann aus 's', 'ms' und 'ns' bestehen.
+ `$__fromTimeFilter(<time_column>)`— Wie oben, kann aber verwendet werden, wenn Ihre Zeitspalte im Epochenformat ist. Das Format kann aus 's', 'ms' und 'ns' bestehen.
+ `$__fromTimeFilter(<time_column>, <comparison_predicate>)`— Wie oben, kann aber comparison\$1predicate angeben.
+ `$__fromTimeFilter(<time_column>, <format>)`— Wie oben, kann aber das Format der Zeitspalte angeben.
+ `$__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)`— Wie oben, kann aber comparison\$1predicate angeben.
+ `$__toTimeFilter(<time_column>)`— Gibt die Zeitbedingung auf der Grundlage von Grafanas zur Zeit in einem Zeitfeld zurück.
+ `$__toTimeFilter(<time_column>, <comparison_predicate>)`— Wie oben, kann aber comparison\$1predicate angeben.
+ `$__toTimeFilter(<time_column>, <format>)`— Wie oben, kann aber das Format der Zeitspalte angeben.
+ `$__toTimeFilter(<time_column>, <comparison_predicate>)`— Wie oben, kann aber comparison\$1predicate angeben.
+ `$__timeGroup(<time_column>, <interval>)`— Erweitert die Zeitspalte in Intervallgruppen. Gilt für date/timestamp/long Zeitspalten..

**Makro \$1\$1\$1timeFilter ()** <time\$1column>

Das folgende Beispiel erklärt das Makro: `$__timeFilter(<time_column>)`

```
- In the following example, the query
select ts, temperature from weather where $__timeFilter(ts)
--- will be translated into
select ts, temperature from weather where ts > '2021-02-24T12:52:48Z' AND ts < '2021-03-24T12:52:48Z'
--- where you can see the grafana dashboard's time range is applied to the column ts in the query.
```

**Makro \$1\$1\$1timeFilter (,)** <time\$1column><format>

In einigen Fällen werden Zeitspalten in der Datenbank in benutzerdefinierten Formaten gespeichert. Im folgenden Beispiel wird das `$__timeFilter(<time_column>, <format>)` Makro erklärt, mit dessen Hilfe benutzerdefinierte Zeitstempel auf der Grundlage der Zeitauswahl von grafana gefiltert werden können:

```
SELECT TO_TIMESTAMP("TS",'YYYYMMDDHH24MISS') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYYMMDDHH24MISS") -- TS is in 20210421162012 format
SELECT TO_TIMESTAMP("TS",'YYYY-MON-DD') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYY-MON-DD") -- TS is in 2021-JAN-15 format
```

Im Makro kann das Format eines der gültigen HANA-Formate sein, die Ihrer Zeitstempelspalte entsprechen. `YYYYMMDDHH24MISS`Ist beispielsweise ein gültiges Format, wenn Ihre Daten im `20210421162012` Format gespeichert werden.

**Makro \$1\$1\$1timeFilter (, „epoch“)** <time\$1column><format>

In einigen Fällen werden Zeitstempel als Epochenzeitstempel in Ihrer Datenbank gespeichert. Das folgende Beispiel erklärt das `$__timeFilter(<time_column>, "epoch" <format>)` Makro, das hilft, Epochenzeitstempel auf der Grundlage von Grafanas Zeitauswahl zu filtern. Im Makro kann das Format ms, s oder ns sein. Wenn nicht angegeben, wird s als Standardformat behandelt.

```
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch") -- Example : TIMESTAMP field stored in epoch_second format 1257894000
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","s") -- Example : TIMESTAMP field stored in epoch_second format 1257894000
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- Example : TIMESTAMP field stored in epoch_ms format 1257894000000
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000000000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ns") -- Example : TIMESTAMP field stored in epoch_nanoseconds format 1257894000000000000
```

Anstatt das dritte Argument für den \$1\$1\$1timeFilter zu verwenden, können Sie eines von epoch\$1s, epoch\$1ms oder epoch\$1ns als Ihr zweites Argument verwenden..

```
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms")
-- is same as
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch_ms")
```

**fromTimeFilterDie toTimeFilter Makros \$1\$1\$1 () und \$1\$1\$1 ()**

Das `$__fromTimeFilter()` Makro wird auf eine Bedingung über ein Zeitfeld ausgedehnt, die auf der From-Zeit der Grafana-Zeitauswahl basiert.

Dies akzeptiert drei Parameter. Der erste Parameter ist der Name des Zeitfeldes. Sie können comparison\$1predicate oder das Format der Zeitspalte als zweites Argument übergeben. Wenn Sie beide übergeben möchten, ist format der zweite Parameter und Sie verwenden comparison\$1predicate als dritten Parameter.

****<format>Wenn das Format nicht angegeben ist, geht das Plugin davon aus, dass es sich bei der Zeitspalte um einen Typ handelt. timestamp/date Wenn Ihre Zeitspalte in einem anderen Format als Zeitstempel/Datum gespeichert ist, übergeben Sie das Format als zweites Argument. <format>kann eines der Formate epoch\$1s, epoch\$1ms, epoch\$1ns oder ein anderes benutzerdefiniertes Format sein. YYYY-MM-DD

****<comparison\$1predicate>optionaler Parameter. Wenn nicht übergeben, verwendet das Plugin > als Vergleichsprädikat. <comparison\$1predicate>kann einer von =,\$1 sein =, <>, <, <=, >, >=

`$__toTimeFilter()`funktioniert genauso wie fromTimeFilter \$1\$1\$1 (). Anstatt Grafanas from time zu verwenden, wird es to time verwenden. Außerdem wird das Standard-Vergleichsprädikat < sein.

**\$1\$1\$1timeGroup (,)** <time\$1column><interval> 

Beispielsweise wird das Makro \$1\$1\$1timeGroup (timecol,1h) in der Abfrage zu SERIES\$1ROUND („timecol“, 'INTERVAL 1 HOUR') erweitert.

Das folgende Beispiel erklärt `$__timeGroup(<time_column>, <interval>) macro.`

```
SELECT $__timeGroup(timestamp,1h),  "user", sum("value") as "value"
FROM "salesdata"
WHERE $__timeFilter("timestamp")
GROUP BY $__timeGroup(timestamp,1h), "user"
ORDER BY $__timeGroup(timestamp,1h) ASC
```

Dies wird in die folgende Abfrage übersetzt, in der `$__timeGroup(timestamp,1h)` es erweitert wird`SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR')`.

```
SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR') as "timestamp",  "user", sum("value") as "value"
FROM "salesdata"
WHERE "timestamp" > '2020-01-01T00:00:00Z' AND "timestamp" < '2020-01-01T23:00:00Z'
GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR'), "user"
ORDER BY "timestamp" ASC
```

**Anmerkung**  
Wenn Sie das Makro „Gruppieren nach“ zusammen mit dem Makro „\$1\$1\$1timeGroup“ verwenden, stellen Sie sicher, dass das Feld „Auswählen, Sortieren nach“ denselben Namen hat wie das Makro „Gruppieren nach Feld“. Andernfalls erkennt HANA die Abfrage möglicherweise nicht.

Wenn Sie das Intervall in der Funktion \$1\$1\$1timeGroup () nicht fest codieren möchten, können Sie das Grafana überlassen, indem Sie \$1\$1\$1interval als Ihr Intervall angeben. Grafana berechnet dieses Intervall aus dem Dashboard-Zeitbereich. Beispielabfrage:

```
SELECT $__timeGroup(timestamp, $__interval), sum("value") as "value"
FROM "salesdata"
WHERE $__timeFilter("timestamp")
GROUP BY $__timeGroup(timestamp, $__interval)
ORDER BY $__timeGroup(timestamp, $__interval) ASC
```

Diese Abfrage wird basierend auf dem Dashboard-Zeitraum in die folgende Abfrage übersetzt.

```
SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE'), sum("value") as "value"
FROM "salesdata"
WHERE "timestamp" > '2019-12-31T23:09:14Z' AND "timestamp" < '2020-01-01T23:17:54Z'
GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE')
ORDER BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ASC
```

### Warnfunktion
<a name="saphana-alerting"></a>

**Um eine SAP HANA-Warnung in Grafana einzurichten**

1. Erstellen Sie ein Grafikfenster in Ihrem Dashboard.

1. Erstellen Sie eine SAP HANA-Abfrage im Zeitreihenformat.

1. Wählen Sie die Registerkarte **Warnung** und geben Sie die Warnkriterien an.

1. Wählen Sie **Testregel**, um die Warnungsabfrage zu testen.

1. Geben Sie die Empfänger der Warnung, die Nachricht und die Fehlerbehandlung an.

1. Speichern Sie das Dashboard.

#### Warnung bei Daten, die keine Zeitreihendaten sind
<a name="saphana-alerting-nontimeseries"></a>

Um bei Daten, die keine Zeitreihen sind, eine Warnung zu erhalten, verwenden Sie das `TO_TIMESTAMP('${__to:date}')` Makro, um Metriken, die keine Zeitreihen sind, in Zeitreihen umzuwandeln. Dadurch wird Ihre Metrik in eine Einzelpunkt-Zeitreihenabfrage umgewandelt. Das Format der Abfrage ist unten angegeben

```
SELECT TO_TIMESTAMP('${__to:date}'),  <METRIC> FROM <TABLE≶ WHERE <YOUR CONDITIONS>
```

Im folgenden Beispiel hat eine Tabelle vier Felder mit den Namen Benutzername, Alter, Stadt und Rolle. Diese Tabelle hat kein Zeitfeld. Wir möchten Sie benachrichtigen, wenn die Anzahl der Benutzer mit Entwicklerrolle unter drei liegt.

```
SELECT  TO_TIMESTAMP('${__to:date}'), count(*) as "count" FROM (
   SELECT 'John' AS "username", 32 AS "age", 'Chennai' as "city", 'dev' as "role" FROM dummy
   UNION ALL SELECT 'Jacob' AS "username", 32 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy
   UNION ALL SELECT 'Ali' AS "username", 42 AS "age", 'Delhi' as "city", 'admin' as "role" FROM dummy
   UNION ALL SELECT 'Raja' AS "username", 12 AS "age", 'New York' as "city", 'ceo' as "role" FROM dummy
   UNION ALL SELECT 'Sara' AS "username", 35 AS "age", 'Cape Town' as "city", 'dev' as "role" FROM dummy
   UNION ALL SELECT 'Ricky' AS "username", 25 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy
   UNION ALL SELECT 'Angelina' AS "username", 31 AS "age", 'London' as "city", 'cxo' as "role" FROM dummy
) WHERE "role" = 'dev'
```