Requêtes StableNet
Cette section s'applique uniquement aux systèmes intégrés à StableNet®.
Les données StableNet® peuvent être interrogées à partir d'un ensemble de données agrégées dans une base de données SKOOR locale ainsi qu'en temps réel à partir de l'API StableNet®. Les directives suivantes permettent de combiner et d'optimiser ces deux méthodes.
Préparez une requête de données matérialisées pour les appareils et les mesures
L'exemple de requête suivant fournit des données de base à utiliser avec un widget FilterMatrix (par exemple, un filtre pour les appareils ou les mesures) ainsi que pour joindre les données de mesure provenant de l'API StableNet® ou du tableau de données agrégées. La source de données doit être définie comme étant de type StableNet.
-- 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
Comme les données relatives aux appareils et aux mesures ne changent pas très souvent, cette requête doit être matérialisée. Les performances seront ainsi considérablement améliorées.
Définissez l'intervalle d'actualisation sur quotidien et créez des index pour tous les attributs :
Joindre une table externe pour les données en temps réel
En plus de la requête de données matérialisées préparée, les données provenant de l'API StableNet® peuvent être jointes à l'aide d'une table étrangère.
Le mot-clé FROM dans l'exemple suivant pointe vers la requête matérialisée préparée ci-dessus.
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}
Dans le tableau de bord ou l'aperçu des données, les attributs suivants doivent être définis pour cette requête d'exemple :
begin/end : horodatage ISO 8601, par exemple 2024-05-01T00:00:00Z
bucket_size : intervalle de temps en mots tels que heure, jour, mois, etc.
metric_name : nom de métrique StableNet® valide, tel que Round Trip Time
Au lieu de metric_name, essayez l'attribut metric_key dans la clause WHERE pour sélectionner une métrique spécifique si plusieurs sont disponibles
Joindre la table de données agrégées
Si les performances sont plus importantes que les données en temps réel, il est préférable d'utiliser la table de données agrégées plutôt que les tables externes.
Le mot-clé FROM dans l'exemple suivant pointe vers la requête matérialisée préparée ci-dessus.
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}
Dans le tableau de bord ou l'aperçu des données, les attributs suivants doivent être définis pour cette requête exemple :
begin/end : horodatage ISO 8601, par exemple 2024-05-01T00:00:00Z
metric_name : nom de métrique StableNet® valide, tel que Round Trip Time
Au lieu de metric_name, essayez l'attribut metric_key dans la clause WHERE pour sélectionner une métrique spécifique si plusieurs sont disponibles
Tables externes
Nom | Champs | Qualificatifs |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bien que measurement_id et metric_key soient facultatifs, il n'est pas recommandé d'exécuter des requêtes sans eux. Cela entraîne la lecture des données de toutes les mesures et de tous les indicateurs, ce qui peut prendre beaucoup de temps et imposer une charge importante au server StableNet. Cela n'est conseillé que pour des intervalles de temps très courts (< 1 h). Si plusieurs mesures et indicateurs sont nécessaires, il convient d'utiliser la table stablenet_measurement_data_aggregated.
Données de mesure agrégées
Agrégées par heure, mises à jour automatiquement toutes les heures. Peuvent être utilisées pour effectuer des requêtes analytiques sur un large éventail de mesures et sur de longues périodes.
Il s'agit essentiellement d'une hypertable Timescale (https://docs.timescale.com/ ). La taille des blocs est de 7 jours, les blocs sont compressés après 7 jours.
Nom | Champs |
|---|---|
|
|
stablenet_measurement_data_aggregated Contient uniquement les données pour les clés métriques configurées.


