Stellen Sie eine Connect zu einer Microsoft SQL Server-Datenquelle her - Amazon Managed Grafana

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 Microsoft SQL Server-Datenquelle her

Verwenden Sie die Microsoft SQL Server (MSSQL) -Datenquelle, um Daten aus einem beliebigen Microsoft SQL Server 2005 oder neuer, einschließlich Microsoft Azure SQL-Datenbank, abzufragen und zu visualisieren.

Wichtig

Grafana Version 8.0 ändert die zugrunde liegende Datenstruktur für Datenrahmen für Microsoft SQL Server, Postgres und MySQL. Infolgedessen wird ein Zeitreihenabfrageergebnis in einem breiten Format zurückgegeben. Weitere Informationen finden Sie unter Wide Format in der Grafana-Datenrahmen-Dokumentation.

Damit Ihre Visualisierungen wie zuvor funktionieren, müssen Sie möglicherweise einige manuelle Migrationen durchführen. Eine Lösung ist auf Github unter Postgres/MySQL/MSSQL dokumentiert: Wichtige Änderung in Version 8.0 in Bezug auf Zeitreihenabfragen und die Reihenfolge der Datenspalten.

Die Datenquelle hinzufügen

  1. Öffnen Sie das Seitenmenü, indem Sie das Grafana-Symbol in der oberen Kopfzeile auswählen.

  2. Im Seitenmenü unter dem Link Konfiguration sollten Sie einen Link Datenquellen finden.

  3. Wählen Sie in der oberen Kopfzeile die Schaltfläche + Datenquelle hinzufügen.

  4. Wählen Sie Microsoft SQL Server aus der Dropdownliste Typ aus.

Datenquellenoptionen

Name Beschreibung
Name Der Name der Datenquelle. So sehen Sie die Datenquelle in Bedienfeldern und Abfragen.
Default Die Standarddatenquelle bedeutet, dass sie für neue Panels vorab ausgewählt wird.
Host Die IP-Adresse/der Hostname und der optionale Port Ihrer MSSQL-Instanz. Wenn der Port weggelassen wird, wird der Standardwert 1433 verwendet.
Database Name Ihrer MSSQL-Datenbank.
User Login/Benutzername des Datenbankbenutzers.
Password Passwort des Datenbankbenutzers.
Encrypt Diese Option bestimmt, ob oder in welchem Umfang eine sichere SSL-TCP/IP-Verbindung mit dem Server ausgehandelt wird, Standard false (Grafana v5.4+).
Max open Die maximale Anzahl offener Verbindungen zur Datenbank, Standard unlimited (Grafana v5.4+).
Max idle Die maximale Anzahl von Verbindungen im inaktiven Verbindungspool, Standard 2 (Grafana v5.4+).
Max lifetime Die maximale Zeit in Sekunden, für die eine Verbindung wiederverwendet werden kann, Standardeinstellung /4 Stunden. 14400

Minimales Zeitintervall

Eine Untergrenze für die $_interval $_interval_ms Variablen. Es wird empfohlen, die Schreibfrequenz einzustellen, z. B. 1m wenn Ihre Daten jede Minute geschrieben werden. Diese Option kann auch in einem Dashboard unter Datenquellenoptionen überschrieben/konfiguriert werden. Dieser Wert muss als Zahl gefolgt von einer gültigen Zeit-ID formatiert werden, z. B. 1m (1 Minute) oder 30s (30 Sekunden). Die folgenden Zeitkennungen werden unterstützt.

Kennung Beschreibung
y Jahr
M Monat
w Woche
d Tag
h Stunde
m Minute
s Sekunde
ms Millisekunde

Berechtigungen für Datenbankbenutzer

Wichtig

Dem Datenbankbenutzer, den Sie beim Hinzufügen der Datenquelle angeben, sollten nur SELECT-Berechtigungen für die angegebene Datenbank und die Tabellen erteilt werden, die Sie abfragen möchten. Grafana überprüft nicht, ob die Abfrage sicher ist. Die Abfrage kann jede SQL-Anweisung enthalten. Beispielsweise DROP TABLE user; würden Anweisungen wie DELETE FROM user; und ausgeführt werden. Um sich davor zu schützen, empfehlen wir dringend, einen bestimmten MSSQL-Benutzer mit eingeschränkten Rechten zu erstellen.

Der folgende Beispielcode zeigt die Erstellung eines bestimmten MSSQL-Benutzers mit eingeschränkten Rechten.

CREATE USER grafanareader WITH PASSWORD 'password' GRANT SELECT ON dbo.YourTable3 TO grafanareader

Stellen Sie sicher, dass der Benutzer keine unerwünschten Berechtigungen von der öffentlichen Rolle erhält.

Bekannte Probleme

Wenn Sie eine ältere Version von Microsoft SQL Server wie 2008 und 2008R2 verwenden, müssen Sie möglicherweise die Verschlüsselung deaktivieren, um eine Verbindung herstellen zu können. Wenn möglich, empfehlen wir Ihnen, das neueste verfügbare Service Pack zu verwenden, um eine optimale Kompatibilität zu gewährleisten.

Abfrage-Editor

Sie finden den MSSQL-Abfrage-Editor auf der Registerkarte „Metriken“ im Bearbeitungsmodus des Diagramm-, Singlestat- oder Tabellenfensters. Sie wechseln in den Bearbeitungsmodus, indem Sie den Titel des Bedienfelds und dann Bearbeiten wählen. Mit dem Editor können Sie eine SQL-Abfrage definieren, um Daten auszuwählen, die visualisiert werden sollen.

  1. Wählen Sie Format als Time series (unter anderem zur Verwendung in Graph- oder Singlestat-Bedienfeldern) oder Table (unter anderem zur Verwendung im Tabellenfenster).

  2. Dies ist der eigentliche Editor, in den Sie Ihre SQL-Abfragen schreiben.

  3. Zeigt den Hilfebereich für MSSQL unter dem Abfrage-Editor an.

  4. Zeigt die SQL-Abfrage an, die ausgeführt wurde. Wird zuerst verfügbar sein, nachdem eine erfolgreiche Abfrage ausgeführt wurde.

  5. Fügen Sie eine zusätzliche Abfrage hinzu, bei der ein zusätzlicher Abfrage-Editor angezeigt wird.

Makros

Um die Syntax zu vereinfachen und dynamische Teile wie Datumsbereichsfilter zu berücksichtigen, kann die Abfrage Makros enthalten.

Beispiel für ein Makro Beschreibung
$__time(dateColumn) Wird durch einen Ausdruck ersetzt, um die Spalte in Zeit umzubenennen. Zum Beispiel DateColumn als Uhrzeit.
$__timeEpoch(dateColumn) Wird durch einen Ausdruck ersetzt, um einen DATETIME-Spaltentyp in einen Unix-Zeitstempel zu konvertieren und ihn in Zeit umzubenennen. Zum Beispiel DATEDIFF (second, „1970-01-01", DateColumn) ALS Uhrzeit.
$__timeFilter(dateColumn) Wird durch einen Zeitbereichsfilter ersetzt, der den angegebenen Spaltennamen verwendet. Zum Beispiel DateColumn BETWEEN „2017-04-21T 05:01:17 Z“ UND „2017-04-21T 05:06:17 Z“.
$__timeFrom() Wird durch den Start der aktuell aktiven Zeitauswahl ersetzt. Zum Beispiel „2017-04-21T 05:01:17 Z“.
$__timeTo() Wird durch das Ende der aktuell aktiven Zeitauswahl ersetzt. Zum Beispiel „2017-04-21T 05:06:17 Z“.
$__timeGroup(dateColumn,'5m'[, fillvalue]) Wird durch einen Ausdruck ersetzt, der in der GROUP BY-Klausel verwendet werden kann. Wenn Sie für FillValue den Wert NULL oder einen Gleitkommawert angeben, werden leere Reihen im Zeitbereich automatisch mit diesem Wert gefüllt. Beispiel: CAST (ROUND (DATEDIFF (second, „1970-01-01", time_column) /300.0, 0) als bigint) *300.
$__timeGroup(dateColumn,'5m', 0) Wie zuvor, aber mit einem Füllparameter, sodass fehlende Punkte in dieser Serie von grafana hinzugefügt und 0 als Wert verwendet wird.
$__timeGroup(dateColumn,'5m', NULL) Wie oben, aber NULL wird als Wert für fehlende Punkte verwendet.
$__timeGroup(dateColumn,'5m', previous) Wie oben, aber der vorherige Wert in dieser Reihe wird als Füllwert verwendet, wenn noch kein Wert gesehen wurde. NULL wird verwendet (nur in Grafana 5.3+ verfügbar).

Der Abfrage-Editor verfügt über einen Link Generiertes SQL, der angezeigt wird, nachdem eine Abfrage ausgeführt wurde, während Sie sich im Panel-Bearbeitungsmodus befinden. Wenn Sie ihn auswählen, wird er erweitert und zeigt die unformatierte interpolierte SQL-Zeichenfolge an, die ausgeführt wurde.

Tabellenabfragen

Wenn die Abfrageoption auf Als Tabelle formatieren gesetzt ist, können Sie grundsätzlich jede Art von SQL-Abfrage ausführen. Das Tabellenfenster zeigt automatisch die Ergebnisse der Spalten und Zeilen an, die Ihre Abfrage zurückgibt.

Der folgende Beispielcode zeigt eine Datenbanktabelle.

CREATE TABLE [event] ( time_sec bigint, description nvarchar(100), tags nvarchar(100), )
CREATE TABLE [mssql_types] ( c_bit bit, c_tinyint tinyint, c_smallint smallint, c_int int, c_bigint bigint, c_money money, c_smallmoney smallmoney, c_numeric numeric(10,5), c_real real, c_decimal decimal(10,2), c_float float, c_char char(10), c_varchar varchar(10), c_text text, c_nchar nchar(12), c_nvarchar nvarchar(12), c_ntext ntext, c_datetime datetime, c_datetime2 datetime2, c_smalldatetime smalldatetime, c_date date, c_time time, c_datetimeoffset datetimeoffset ) INSERT INTO [mssql_types] SELECT 1, 5, 20020, 980300, 1420070400, '$20000.15', '£2.15', 12345.12, 1.11, 2.22, 3.33, 'char10', 'varchar10', 'text', N'☺nchar12☺', N'☺nvarchar12☺', N'☺text☺', GETDATE(), CAST(GETDATE() AS DATETIME2), CAST(GETDATE() AS SMALLDATETIME), CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), SWITCHOFFSET(CAST(GETDATE() AS DATETIMEOFFSET), '-07:00')

Der folgende Beispielcode zeigt eine Abfrage.

SELECT * FROM [mssql_types]

Sie können den Namen der Spalten im Tabellenfenster mithilfe der regulären AS SQL-Spaltenauswahlsyntax steuern, wie im folgenden Beispielcode gezeigt.

SELECT c_bit as [column1], c_tinyint as [column2] FROM [mssql_types]

Das resultierende Tabellenfeld:

Zeitreihenabfragen

Wenn Sie Format auf Zeitreihe festlegen, z. B. für die Verwendung im Grafikfenster, muss die Abfrage eine Spalte mit dem Namen time haben, die entweder einen SQL-Datetime-Wert oder einen beliebigen numerischen Datentyp zurückgibt, der die Unix-Epoche in Sekunden darstellt. Sie können eine Spalte mit dem Namen zurückgebenmetric, der als Metrikname für die Wertspalte verwendet wird. Jede Spalte außer time und metric wird als Wertspalte behandelt. Wenn Sie die metric Spalte weglassen, ist der Name der Wertspalte der Metrikname. Sie können mehrere Wertspalten auswählen, von denen jede ihren Namen als Metrik hat. Wenn Sie mehrere Wertspalten und eine Spalte mit dem Namen zurückgeben, metric wird diese Spalte als Präfix für den Seriennamen verwendet.

Ergebnissätze von Zeitreihenabfragen müssen nach Zeit sortiert werden.

Der folgende Beispielcode zeigt eine Datenbanktabelle.

CREATE TABLE [event] ( time_sec bigint, description nvarchar(100), tags nvarchar(100), )
CREATE TABLE metric_values ( time datetime, measurement nvarchar(100), valueOne int, valueTwo int, ) INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 12:30:00', 'Metric A', 62, 6) INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 12:30:00', 'Metric B', 49, 11) ... INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 13:55:00', 'Metric A', 14, 25) INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 13:55:00', 'Metric B', 48, 10)

Der folgende Beispielcode zeigt eine value und eine metric Spalte.

SELECT time, valueOne, measurement as metric FROM metric_values WHERE $__timeFilter(time) ORDER BY 1

Wenn die vorhergehende Abfrage in einem Grafikfenster verwendet wird, werden zwei Reihen mit Namen Metric A und Metric B mit den Werten erstellt, über time denen die Werte valueOne valueTwo dargestellt werden.

Der folgende Beispielcode zeigt mehrere value Spalten.

SELECT time, valueOne, valueTwo FROM metric_values WHERE $__timeFilter(time) ORDER BY 1

Wenn die vorhergehende Abfrage in einem Grafikfenster verwendet wird, werden zwei Reihen mit Namen Metric A und Metric B mit den Werten valueOne erzeugt, die valueTwo time überzeichnet wurden.

Der folgende Beispielcode zeigt die Verwendung des Makros $__timeGroup.

SELECT $__timeGroup(time, '3m') as time, measurement as metric, avg(valueOne) FROM metric_values WHERE $__timeFilter(time) GROUP BY $__timeGroup(time, '3m'), measurement ORDER BY 1

Wenn die vorherige Abfrage in einem Grafikfenster verwendet wird, werden zwei Reihen mit Namen Metric A und Metric B mit den Werten valueOne erstellt, die übereinander gezeichnet wurden. valueTwo time Bei zwei Reihen, in denen innerhalb eines Drei-Minuten-Fensters ein Wert fehlt, wird eine Linie zwischen diesen beiden Linien gerendert. Sie werden feststellen, dass das Diagramm auf der rechten Seite niemals auf Null sinkt.

Der folgende Beispielcode zeigt die Verwendung des Makros $__timeGroup mit einem Füllparameter, der auf Null gesetzt ist.

SELECT $__timeGroup(time, '3m', 0) as time, measurement as metric, sum(valueTwo) FROM metric_values WHERE $__timeFilter(time) GROUP BY $__timeGroup(time, '3m'), measurement ORDER BY 1

Wenn diese Abfrage in einem Grafikfeld verwendet wird, sind das Ergebnis zwei Reihen Metric B mit Namen Metric A und übereinander geplottet. valueTwo time Jede Reihe, in der innerhalb eines Drei-Minuten-Fensters ein Wert fehlt, hat den Wert Null. Dieser Wert wird im Diagramm auf der rechten Seite wiedergegeben.

Erstellen von Vorlagen

Anstatt Dinge wie Server-, Anwendungs- und Sensornamen in Ihren metrischen Abfragen fest zu codieren, können Sie stattdessen Variablen verwenden. Variablen werden als Drop-down-Auswahlfelder oben im Dashboard angezeigt. Sie können diese Dropdown-Felder verwenden, um die in Ihrem Dashboard angezeigten Daten zu ändern.

Weitere Informationen zu Vorlagen und Vorlagenvariablen finden Sie unter. Vorlagen und Variablen

Variable abfragen

Wenn Sie eine Vorlagenvariable dieses Typs hinzufügenQuery, können Sie eine MSSQL-Abfrage schreiben, die beispielsweise Messnamen, Schlüsselnamen oder Schlüsselwerte zurückgeben kann, die als Dropdownauswahlfeld angezeigt werden.

Sie können beispielsweise eine Variable verwenden, die alle Werte für die hostname Spalte in einer Tabelle enthält, wenn Sie eine solche Abfrage in der Abfrageeinstellung für die Vorlagenvariable angeben.

SELECT hostname FROM host

Eine Abfrage kann mehrere Spalten zurückgeben und Grafana erstellt automatisch eine Liste daraus. Die folgende Abfrage gibt beispielsweise eine Liste mit Werten von hostname und hostname2 zurück.

SELECT [host].[hostname], [other_host].[hostname2] FROM host JOIN other_host ON [host].[city] = [other_host].[city]

Eine weitere Option ist eine Abfrage, die eine Schlüssel/Wert-Variable erstellen kann. Die Abfrage sollte zwei Spalten mit dem Namen __text und zurückgeben. __value Der __text Spaltenwert sollte eindeutig sein (wenn er nicht eindeutig ist, wird der erste Wert verwendet). Die Optionen in der Dropdownliste enthalten einen Text und einen Wert, sodass Sie einen benutzerfreundlichen Namen als Text und eine ID als Wert angeben können. Eine Beispielabfrage mit hostname als Text und id als Wert:

SELECT hostname __text, id __value FROM host

Sie können auch verschachtelte Variablen erstellen. Zum Beispiel, wenn Sie eine andere Variable benannt region haben. Dann könnten Sie festlegen, dass die hosts-Variable nur Hosts aus der aktuell ausgewählten Region mit einer Abfrage wie dieser anzeigt (wenn region es sich = um eine Variable mit mehreren Werten handelt, verwenden Sie den IN Vergleichsoperator, anstatt einen Vergleich mit mehreren Werten durchzuführen).

SELECT hostname FROM host WHERE region IN ($region)

Verwenden von Variablen in Abfragen

Anmerkung

Werte von Vorlagenvariablen werden nur in Anführungszeichen gesetzt, wenn die Vorlagenvariable a istmulti-value.

Wenn es sich bei der Variablen um eine Variable mit mehreren Werten handelt, verwenden Sie den IN Vergleichsoperator=, anstatt sie mit mehreren Werten abzugleichen.

Es gibt zwei Syntaxen:

$<varname>Beispiel mit einer Vorlagenvariablen namenshostname:

SELECT atimestamp time, aint value FROM table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp

[[varname]]Beispiel mit einer Vorlagenvariablen namenshostname:

SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in([[hostname]]) ORDER BY atimestamp

Ausschalten der Anführungszeichen für Variablen mit mehreren Werten

Grafana erstellt automatisch eine durch Kommas getrennte Zeichenfolge in Anführungszeichen für Variablen mit mehreren Werten. Wenn zum Beispiel server01 und ausgewählt server02 sind, wird es wie folgt formatiert:. 'server01', 'server02' Verwenden Sie die CSV-Formatierungsoption für Variablen, um das Anführen von Anführungszeichen zu deaktivieren.

${servers:csv}

Weitere Informationen zu den Formatierungsoptionen für Variablen finden Sie unterVorlagen und Variablen.

Anmerkungen

Mithilfe von Anmerkungen können Sie Grafiken mit ausführlichen Ereignisinformationen überlagern. Sie fügen Annotationsabfragen über das Dashboard-Menü /die Ansicht Anmerkungen hinzu. Weitere Informationen finden Sie unter Anmerkungen.

Spalten:

Name Beschreibung
time Der Name des Datums-/Uhrzeitfeldes. Könnte eine Spalte mit einem systemeigenen SQL-Datentyp für Datum/Uhrzeit oder Epochenwert sein.
timeend Optionaler Name des Enddatums-/Uhrzeitfeldes. Könnte eine Spalte mit einem systemeigenen SQL-Datentyp für Datum/Uhrzeit oder Epochenwert sein.
text Feld mit der Beschreibung des Ereignisses.
tags Optionaler Feldname, der für Event-Tags als kommagetrennte Zeichenfolge verwendet werden soll.

Der folgende Beispielcode zeigt Datenbanktabellen.

CREATE TABLE [events] ( time_sec bigint, description nvarchar(100), tags nvarchar(100), )

Wir verwenden auch die in definierte DatenbanktabelleZeitreihenabfragen.

Der folgende Beispielcode zeigt eine Abfrage, die eine Zeitspalte mit Epochenwerten verwendet.

SELECT time_sec as time, description as [text], tags FROM [events] WHERE $__unixEpochFilter(time_sec) ORDER BY 1

Der folgende Beispielcode zeigt eine Regionsabfrage, die Zeit- und Zeitendspalten mit Epochenwerten verwendet.

SELECT time_sec as time, time_end_sec as timeend, description as [text], tags FROM [events] WHERE $__unixEpochFilter(time_sec) ORDER BY 1

Der folgende Beispielcode zeigt eine Abfrage, die eine Zeitspalte des systemeigenen SQL-Datentyps Datum/Uhrzeit verwendet.

SELECT time, measurement as text, convert(varchar, valueOne) + ',' + convert(varchar, valueTwo) as tags FROM metric_values WHERE $__timeFilter(time_column) ORDER BY 1

Unterstützung für gespeicherte Prozeduren

Es wurde verifiziert, dass gespeicherte Prozeduren funktionieren. Es kann jedoch Randfälle geben, in denen es nicht wie erwartet funktioniert. Gespeicherte Prozeduren sollten in Tabellen-, Zeitreihen- und Annotationsabfragen unterstützt werden, solange Sie dieselbe Benennung von Spalten verwenden und Daten im gleichen Format zurückgeben, wie zuvor in den jeweiligen Abschnitten beschrieben.

Makrofunktionen funktionieren nicht innerhalb einer gespeicherten Prozedur.

Beispiele

In den folgenden Beispielen ist die Datenbanktabelle in Zeitreihenabfragen definiert. Nehmen wir an, Sie möchten vier Reihen in einem Grafikfeld visualisieren, z. B. alle Kombinationen von Spalten valueOne valueTwo undmeasurement. Das Grafikfeld auf der rechten Seite visualisiert, was wir erreichen wollen. Um dieses Problem zu lösen, müssen Sie zwei Abfragen verwenden:

Der folgende Beispielcode zeigt die erste Abfrage.

SELECT $__timeGroup(time, '5m') as time, measurement + ' - value one' as metric, avg(valueOne) as valueOne FROM metric_values WHERE $__timeFilter(time) GROUP BY $__timeGroup(time, '5m'), measurement ORDER BY 1

Der folgende Beispielcode zeigt die zweite Abfrage.

SELECT $__timeGroup(time, '5m') as time, measurement + ' - value two' as metric, avg(valueTwo) as valueTwo FROM metric_values GROUP BY $__timeGroup(time, '5m'), measurement ORDER BY 1

Gespeicherte Prozedur, die Zeit im Epochenformat verwendet

Sie können eine gespeicherte Prozedur definieren, die alle Daten zurückgibt, die Sie zum Rendern von vier Serien in einem Grafikfeld wie oben benötigen. In diesem Fall akzeptiert die gespeicherte Prozedur zwei Parameter @from und @to int Datentypen, bei denen es sich um einen Zeitraum (von bis) im Epochenformat handeln sollte, der verwendet wird, um die Daten zu filtern, die von der gespeicherten Prozedur zurückgegeben werden sollen.

Dies ahmt die Ausdrücke $__timeGroup(time, '5m') in den Ausdrücken „Auswählen“ und „Gruppieren nach“ nach, weshalb zahlreiche lange Ausdrücke benötigt werden. Diese könnten, falls gewünscht, in MSSQL-Funktionen extrahiert werden.

CREATE PROCEDURE sp_test_epoch( @from int, @to int ) AS BEGIN SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time, measurement + ' - value one' as metric, avg(valueOne) as value FROM metric_values WHERE time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01') GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int), measurement UNION ALL SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time, measurement + ' - value two' as metric, avg(valueTwo) as value FROM metric_values WHERE time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01') GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int), measurement ORDER BY 1 END

Dann können Sie die folgende Abfrage für Ihr Grafikpanel verwenden.

DECLARE @from int = $__unixEpochFrom(), @to int = $__unixEpochTo() EXEC dbo.sp_test_epoch @from, @to

Gespeicherte Prozedur, die Uhrzeit im Datetime-Format verwendet

Sie können eine gespeicherte Prozedur definieren, die alle Daten zurückgibt, die Sie zum Rendern von vier Serien in einem Grafikfeld wie oben benötigen. In diesem Fall akzeptiert die gespeicherte Prozedur zwei Parameter @from und @to datetime Datentypen, bei denen es sich um einen Zeitraum (von-bis) handeln sollte, der verwendet wird, um die Daten zu filtern, die aus der gespeicherten Prozedur zurückgegeben werden sollen.

Dies ahmt die Ausdrücke $__timeGroup(time, '5m') in den Ausdrücken „Auswählen“ und „Gruppieren nach“ nach, weshalb zahlreiche lange Ausdrücke benötigt werden. Diese könnten, falls gewünscht, in MSSQL-Funktionen extrahiert werden.

CREATE PROCEDURE sp_test_datetime( @from datetime, @to datetime ) AS BEGIN SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time, measurement + ' - value one' as metric, avg(valueOne) as value FROM metric_values WHERE time >= @from AND time <= @to GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int), measurement UNION ALL SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time, measurement + ' - value two' as metric, avg(valueTwo) as value FROM metric_values WHERE time >= @from AND time <= @to GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int), measurement ORDER BY 1 END

Dann können Sie die folgende Abfrage für Ihr Grafikpanel verwenden.

DECLARE @from datetime = $__timeFrom(), @to datetime = $__timeTo() EXEC dbo.sp_test_datetime @from, @to

Warnfunktion

Zeitreihenabfragen sollten unter Alarmbedingungen funktionieren. Abfragen im Tabellenformat werden in Warnungsregelbedingungen noch nicht unterstützt.