StableNet-Abfragen
Dieser Abschnitt gilt ausschließlich für Systeme, die in StableNet® integriert sind
StableNet®-Daten können sowohl aus einem aggregierten Datensatz in einer lokalen SKOOR-Datenbank als auch in Echtzeit über die StableNet®-API abgefragt werden. Die folgenden Richtlinien helfen dabei, diese beiden Methoden zu kombinieren und zu optimieren.
Erstellen Sie eine materialisierte Datenabfrage für Geräte und Messungen
Die folgende Beispielabfrage liefert Basisdaten zur Verwendung mit einem FilterMatrix-Widget (z. B. Filter für Geräte oder Messungen) sowie zum Verknüpfen von Messdaten aus der StableNet®-API oder der aggregierten Datentabelle. Die Datenquelle muss auf den Typ „StableNet“ eingestellt sein.
-- Data query example "device_measurement" SELECT std.id AS device_id, std.display_name AS device_name, sm.id as measurement_id, sm.name as measurement_name FROM stablenet_taggable_device std JOIN stablenet_measurement sm ON std.id = sm.dest_device_id
Da sich Geräte- und Messdaten nicht sehr häufig ändern, sollte diese Abfrage materialisiert werden. Dadurch wird die Leistung deutlich gesteigert.
Stellen Sie das Aktualisierungsintervall auf „täglich“ ein und erstellen Sie Indizes für alle Attribute:
Verknüpfung einer Fremdtabelle für Echtzeitdaten
Auf der Grundlage der vorbereiteten materialisierten Datenabfrage können Daten aus der StableNet®-API mithilfe einer Fremdtabelle verknüpft werden.
Das Schlüsselwort „FROM“ im folgenden Beispiel verweist auf die oben vorbereitete materialisierte Abfrage.
SELECT
dm.device_id,
dm.device_name,
dm.measurement_name,
dm.measurement_id,
sma.metric_key,
sma.metric_name,
sma.interval,
sma.min,
sma.max,
sma.avg,
sma.timestamp
FROM device_measurement dm
JOIN stablenet_measurement_data sma
ON dm.measurement_id = sma.measurement_id
WHERE sma.start = ${begin}::timestamptz
AND sma."end" = ${end}::timestamptz
AND sma.bucket_size = EXTRACT(
EPOCH FROM ('1 ' || ${bucket_size})::interval
)::integer
AND sma.metric_name = ${metric_name}
Im Dashboard oder in der Datenvorschau müssen für diese Beispielabfrage die folgenden Attribute festgelegt werden:
begin/end: ISO-8601-Zeitstempel, z. B. 2024-05-01T00:00:00Z
bucket_size: Zeitintervall in Einheiten wie Stunde, Tag, Monat usw.
metric_name: Ein gültiger StableNet®-Metrikname wie „Round Trip Time“
Anstelle von „metric_name“ können Sie das Attribut „metric_key“ in der WHERE-Klausel verwenden, um eine bestimmte Metrik auszuwählen, falls mehrere verfügbar sind
Verknüpfung mit aggregierter Datentabelle
Wenn die Leistung wichtiger ist als Echtzeitdaten, sollte die aggregierte Datentabelle den Fremdtabellen vorgezogen werden.
Das FROM-Schlüsselwort im folgenden Beispiel verweist auf die oben vorbereitete materialisierte Abfrage.
SELECT
dm.device_id,
dm.device_name,
dm.measurement_name,
dm.measurement_id,
sma.metric_key,
sma.metric_name,
sma.interval,
sma.min,
sma.max,
sma.avg,
sma.timestamp
FROM device_measurement dm
JOIN stablenet_measurement_data_aggregated sma
ON dm.measurement_id = sma.measurement_id
WHERE sma.timestamp BETWEEN ${begin}::timestamptz AND ${end}::timestamptz
AND sma.metric_name = ${metric_name}
Im Dashboard oder in der Datenvorschau müssen für diese Beispielabfrage die folgenden Attribute festgelegt werden:
begin/end: Zeitstempel nach ISO 8601, z. B. 2024-05-01T00:00:00Z
metric_name: Ein gültiger StableNet®-Metrikname wie „Round Trip Time“
Anstelle von „metric_name“ können Sie das Attribut „metric_key“ in der WHERE-Klausel verwenden, um eine bestimmte Metrik auszuwählen, falls mehrere verfügbar sind
Fremdtabellen
Name | Felder | Qualifizierer |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Obwohl measurement_id und metric_key optional sind, wird davon abgeraten, Abfragen ohne diese Parameter auszuführen. Andernfalls werden die Messdaten aller Messungen und aller Metriken gelesen, was sehr lange dauern kann und den StableNet-Server stark belastet. Dies ist nur für sehr kurze Zeiträume < 1 Stunde ratsam. Wenn mehrere Messungen und Metriken benötigt werden, sollte die Tabelle stablenet_measurement_data_aggregated verwendet werden.
Agregierte Messdaten
Nach Stunden aggregiert, stündlich automatisch aktualisiert. Kann verwendet werden, um Analyseabfragen über eine große Bandbreite an Messungen und über große Zeiträume hinweg durchzuführen.
Handelt sich im Grunde um eine Timescale-Hypertable (https://docs.timescale.com/). Die Chunk-Größe beträgt 7 Tage, Chunks werden nach 7 Tagen komprimiert.
Name | Felder |
|---|---|
|
|
stablenet_measurement_data_aggregated Enthält nur Daten für konfigurierte Metrikschlüssel.


