

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Connect ke sumber data SAP HANA
<a name="saphana-AMG-datasource"></a>

[SAP HANA](https://www.sap.com/products/technology-platform/hana.html) adalah database dalam memori berkinerja tinggi yang mempercepat pengambilan keputusan dan tindakan real-time yang digerakkan oleh data. Ini dikembangkan dan dipasarkan oleh SAP. Plugin sumber data SAP HANA membantu Anda menghubungkan instance SAP HANA Anda dengan Grafana.

Dengan plugin SAP HANA Grafana Enterprise, Anda dapat memvisualisasikan data SAP HANA Anda bersama semua sumber data Anda yang lain di Grafana serta data log dan metrik dalam konteks. Plugin ini mencakup editor kueri bawaan, mendukung anotasi, dan memungkinkan Anda untuk mengatur ambang peringatan, mengontrol akses, mengatur izin, dan banyak lagi.

**catatan**  
Sumber data ini hanya untuk Grafana Enterprise. Untuk informasi selengkapnya, lihat [Mengelola akses ke plugin Enterprise](upgrade-to-enterprise-plugins.md).  
Selain itu, di ruang kerja yang mendukung versi 9 atau yang lebih baru, sumber data ini mungkin mengharuskan Anda untuk menginstal plugin yang sesuai. Untuk informasi selengkapnya, lihat [Perluas ruang kerja Anda dengan plugin](grafana-plugins.md).

## Fitur
<a name="saphana-features"></a>
+ **Editor kueri** - Plugin ini dilengkapi dengan editor kueri SQL bawaan dengan penyorotan sintaks yang memungkinkan Anda memvisualisasikan deret waktu atau data tabel dan secara otomatis melengkapi makro Grafana dasar.
+ **Izin sumber data** — Kontrol siapa yang dapat melihat atau menanyakan data SAP HANA di Grafana.
+ **Anotasi** — Hamparkan peristiwa atau data SAP HANA pada grafik Grafana apa pun untuk mengkorelasikan peristiwa dengan data grafik lainnya.
+ **Peringatan** - Atur toko metrik berbasis peringatan di SAP HANA.
+ **Variabel untuk kueri** — Buat variabel template di Grafana, yang didasarkan pada data SAP HANA, dan sertakan variabel dalam kueri SAP HANA untuk membuat dasbor interaktif.

## Menambahkan sumber data
<a name="saphana-adding-the-data-source"></a>

1.  Buka konsol Grafana di ruang kerja Grafana yang Dikelola Amazon dan pastikan Anda masuk. 

1.  Di menu samping di bawah **Konfigurasi** (ikon roda gigi), pilih **Sumber Data**. 

1.  Pilih **Tambahkan sumber data**. 
**catatan**  
 Jika Anda tidak melihat link **Sumber Data** di menu samping Anda, itu berarti bahwa pengguna Anda saat ini tidak memiliki `Admin` peran. 

1.  Pilih **SAP HANA** dari daftar sumber data. 

1. Di editor Config, masukkan informasi berikut:
   + Untuk **alamat Server**, Berikan alamat instance SAP HANA. Contoh:`xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com`.
   + Untuk **port Server**, sediakan port instance SAP HANA.
   + Untuk **Username**, masukkan nama pengguna yang akan digunakan untuk terhubung ke instance SAP HANA.
   + Untuk **Kata Sandi**, masukkan kata sandi untuk pengguna ini.
   + (Opsional) Aktifkan **Lewati verifikasi TLS** jika Anda ingin melewati verifikasi TLS.
   + (Opsional) Aktifkan **Auth Klien TLS** jika Anda perlu memberikan sertifikat dan kunci klien.
   + (Opsional) Aktifkan **Dengan sertifikat CA** jika Anda ingin mengaktifkan verifikasi Sertifikat TLS yang ditandatangani sendiri.
   + (Opsional) Untuk **skema Default**, masukkan skema default yang akan digunakan. Jika Anda menghilangkan ini, Anda harus menentukan skema di setiap kueri. 

**Akses dan izin**

Untuk menghubungkan Grafana ke SAP HANA, gunakan kredensi khusus. Hanya berikan izin yang diperlukan kepada pengguna. Pertama, buat pengguna terbatas dengan nama pengguna dan kata sandi. Query berikut adalah contoh untuk membuat pengguna terbatas. Kueri ini juga menonaktifkan perubahan kata sandi paksa.

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

Selanjutnya, izinkan pengguna untuk menghubungkan sistem melalui klien seperti Grafana dengan yang berikut:

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

Terakhir, berikan pengguna akses ke tampilan, tabel, dan skema yang diperlukan.

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

**Izin tingkat pengguna**

Batasi akses ke SAP HANA dengan mengklik tab Izin di halaman konfigurasi sumber data untuk mengaktifkan izin sumber data. Pada halaman izin, Admin dapat mengaktifkan izin dan membatasi izin kueri untuk Pengguna dan Tim tertentu.

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

Plugin SAP HANA Grafana dilengkapi dengan editor kueri SQL tempat Anda dapat memasukkan kueri HANA apa pun. Jika kueri Anda mengembalikan data timeseries, Anda dapat memformatnya sebagai timeseries untuk memvisualisasikannya dalam panel grafik. Editor kueri menyediakan penyelesaian otomatis untuk makro Grafana yang didukung dan penyorotan sintaks kueri SQL Anda.

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

Anda dapat menggunakan kueri SAP HANA sebagai sumber anotasi Grafana. Kueri anotasi Anda harus mengembalikan setidaknya satu kolom waktu dan satu kolom teks. Untuk informasi selengkapnya tentang anotasi, lihat[Anotasi](dashboard-annotations.md).

**Untuk membuat anotasi dari SAP HANA**

1.  Pilih ikon roda gigi **pengaturan Dasbor**. 

1.  Dari menu sebelah kiri, pilih **Anotasi**, **Baru**. 

1.  Dari menu drop-down **sumber data**, pilih instance sumber data SAP HANA Anda. 

1.  Di bidang **Query**, masukkan kueri SAP HANA yang mengembalikan setidaknya satu bidang waktu dan satu bidang teks. 

1.  Di menu tarik-turun **Format sebagai**, pilih **Seri Waktu**. 

1.  Untuk setiap anotasi, konfigurasikan bidang **Dari**. 

## Template dan variabel
<a name="saphana-templates"></a>

Untuk menambahkan variabel kueri SAP HANA baru, lihat[Menambahkan variabel kueri](variables-types.md#add-a-query-variable). Gunakan sumber data SAP HANA Anda sebagai sumber data Anda.

Contoh query berikut mengembalikan daftar yang berbeda `username` dari dari `users` tabel.

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

**catatan**  
Pastikan untuk hanya memilih satu kolom dalam kueri variabel Anda. Jika query Anda mengembalikan dua kolom, kolom pertama akan digunakan sebagai nilai tampilan dan kolom kedua akan digunakan sebagai nilai aktual dari variabel. Jika kueri Anda mengembalikan lebih dari dua kolom, mereka akan ditolak.

### Template dan variabel
<a name="saphana-Grafana-variables"></a>

Anda dapat menggunakan variabel Grafana apa pun dalam kueri Anda. Contoh berikut menunjukkan cara menggunakan variabel tunggal/multi dalam kueri Anda.

```
-- 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
```

Mirip dengan teks, variabel juga berfungsi untuk bidang numerik. Dalam contoh di bawah ini, `${age}` adalah variabel kotak teks di mana ia menerima angka dan kemudian membandingkan dengan bidang numerik dalam tabel.

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

Jika variabel Anda mengembalikan beberapa nilai, maka Anda dapat menggunakannya dalam `in` kondisi query SAP HANA seperti di bawah ini. Perhatikan tanda kurung yang mengelilingi variabel untuk membuat `where in` kondisi valid di SAP HANA.

```
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)
```

### Makro
<a name="saphana-macros"></a>
+ `$__timeFilter(<time_column>)`— Menerapkan rentang waktu Grafana ke kolom yang ditentukan saat digunakan dalam kueri mentah. Berlaku untuk kolom date/timestamp/long waktu.
+ `$__timeFilter(<time_column>, <format>)`Sama seperti di atas. Tetapi memberikan kemampuan untuk menentukan format time\$1column yang disimpan dalam database.
+ `$__timeFilter(<time_column>, "epoch", <format>)`— Sama seperti di atas tetapi dapat digunakan ketika kolom waktu Anda dalam zaman. format dapat menjadi salah satu dari 's', 'ms' dan 'ns'.
+ `$__fromTimeFilter(<time_column>)`— Sama seperti di atas tetapi dapat digunakan ketika kolom waktu Anda dalam zaman. format dapat menjadi salah satu dari 's', 'ms' dan 'ns'.
+ `$__fromTimeFilter(<time_column>, <comparison_predicate>)`— Sama seperti di atas tetapi dapat menentukan comparison\$1predicate.
+ `$__fromTimeFilter(<time_column>, <format>)`— Sama seperti di atas tetapi dapat menentukan format kolom waktu.
+ `$__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)`— Sama seperti di atas tetapi dapat menentukan comparison\$1predicate.
+ `$__toTimeFilter(<time_column>)`— Mengembalikan kondisi waktu berdasarkan grafana ke waktu melalui bidang waktu.
+ `$__toTimeFilter(<time_column>, <comparison_predicate>)`— Sama seperti di atas tetapi dapat menentukan comparison\$1predicate.
+ `$__toTimeFilter(<time_column>, <format>)`— Sama seperti di atas tetapi dapat menentukan format kolom waktu.
+ `$__toTimeFilter(<time_column>, <comparison_predicate>)`— Sama seperti di atas tetapi dapat menentukan comparison\$1predicate.
+ `$__timeGroup(<time_column>, <interval>)`— Memperluas kolom waktu ke dalam kelompok interval. Berlaku untuk kolom date/timestamp/long waktu..

**\$1 \$1\$1TimeFilter () makro** <time\$1column>

Contoh berikut menjelaskan `$__timeFilter(<time_column>)` makro:

```
- 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.
```

**\$1\$1\$1TimeFilter (,) makro** <time\$1column><format>

Dalam beberapa kasus, kolom waktu dalam database disimpan dalam format khusus. Contoh berikut menjelaskan `$__timeFilter(<time_column>, <format>)` makro, yang membantu memfilter stempel waktu khusus berdasarkan pemilih waktu grafana:

```
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
```

Di makro, formatnya bisa menjadi salah satu format HANA yang valid yang cocok dengan kolom stempel waktu Anda. Misalnya, `YYYYMMDDHH24MISS` adalah format yang valid ketika data Anda disimpan dalam `20210421162012` format.

**\$1\$1\$1TimeFilter (, “epoch”) makro** <time\$1column><format>

Dalam beberapa kasus, stempel waktu disimpan sebagai stempel waktu epoch di DB Anda. Contoh berikut menjelaskan `$__timeFilter(<time_column>, "epoch" <format>)` makro yang membantu menyaring stempel waktu epoch berdasarkan pemilih waktu grafana. Dalam makro, format bisa menjadi salah satu ms, s atau ns. Jika tidak ditentukan, s akan diperlakukan sebagai format default.

```
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
```

Alih-alih menggunakan argumen ketiga ke \$1\$1\$1timeFilter, Anda dapat menggunakan salah satu epoch\$1s, epoch\$1ms atau epoch\$1ns sebagai argumen kedua Anda..

```
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")
```

**Makro \$1\$1\$1 fromTimeFilter () dan \$1\$1\$1 toTimeFilter ()**

`$__fromTimeFilter()`Makro berkembang ke kondisi selama bidang waktu berdasarkan pemilih waktu Grafana dari waktu.

Ini menerima tiga parameter. Parameter pertama adalah nama bidang waktu. Anda dapat meneruskan comparison\$1predicate atau format kolom waktu sebagai argumen kedua. Jika Anda ingin meneruskan keduanya, maka formatnya adalah parameter kedua dan gunakan comparison\$1predicate sebagai parameter ketiga Anda.

****<format>Jika format tidak ditentukan, plugin akan mengasumsikan bahwa kolom waktu adalah timestamp/date tipe. Jika kolom waktu Anda disimpan dalam format lain selain stempel waktu/tanggal, maka berikan format sebagai argumen kedua. <format>dapat berupa salah satu epoch\$1s, epoch\$1ms, epoch\$1ns atau format khusus lainnya seperti. YYYY-MM-DD

****<comparison\$1predicate>parameter opsional. Jika tidak diteruskan, plugin akan menggunakan> sebagai predikat perbandingan. <comparison\$1predicate>bisa menjadi salah satu dari =,\$1 =, <>, <, <=, >, >=

`$__toTimeFilter()`bekerja sama dengan \$1\$1\$1 fromTimeFilter (). Alih-alih menggunakan Grafana dari waktu ke waktu, itu akan digunakan untuk waktu. Juga predikat perbandingan default adalah <.

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

Misalnya, makro \$1\$1\$1TimeGroup (timecol,1h) diperluas ke SERIES\$1ROUND (“timecol”, 'INTERVAL 1 HOUR') dalam kueri.

Contoh berikut menjelaskan `$__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
```

Ini diterjemahkan ke dalam kueri berikut di `$__timeGroup(timestamp,1h)` mana diperluas ke`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
```

**catatan**  
Saat menggunakan grup dengan makro \$1\$1\$1TimeGroup, pastikan bahwa pilihan Anda, urutkan menurut bidang mengikuti nama yang sama dengan grup Anda menurut bidang. Jika tidak, HANA mungkin tidak mengenali kueri.

Jika Anda tidak ingin membuat kode keras interval dalam fungsi \$1\$1\$1timeGroup (), maka Anda dapat menyerahkannya ke Grafana dengan menentukan \$1\$1\$1interval sebagai interval Anda. Grafana akan menghitung interval itu dari rentang waktu dasbor. Contoh kueri:

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

Kueri itu diterjemahkan ke dalam kueri followin berdasarkan rentang waktu dasbor.

```
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
```

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

**Untuk mengatur peringatan SAP HANA di Grafana**

1. Buat panel grafik di dasbor Anda.

1. Buat kueri SAP HANA dalam format deret waktu.

1. Pilih tab **Alert** dan tentukan kriteria peringatan.

1. Pilih **Aturan Uji** untuk menguji kueri peringatan.

1. Tentukan penerima peringatan, pesan, dan penanganan kesalahan.

1. Simpan dasbor.

#### Peringatan tentang data non-timeseries
<a name="saphana-alerting-nontimeseries"></a>

Untuk memperingatkan data non-timeseries, gunakan `TO_TIMESTAMP('${__to:date}')` makro untuk membuat metrik non-timeseries menjadi timeseries. Ini akan mengubah metrik Anda menjadi kueri deret waktu titik tunggal. Format kueri diberikan di bawah ini

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

Dalam contoh berikut, tabel memiliki empat bidang yang disebut nama pengguna, usia, kota, dan peran. Tabel ini tidak memiliki bidang waktu. Kami ingin memberi tahu ketika jumlah pengguna dengan peran dev kurang dari tiga.

```
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'
```