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 stockées dans une base de données SKOOR locale, ainsi qu’en temps réel via l’API StableNet®. Les recommandations suivantes vous aideront à combiner et à optimiser ces deux méthodes.
Préparer 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 destinées à être utilisées avec un widget FilterMatrix (par exemple, pour filtrer les appareils ou les mesures), ainsi qu'à joindre des données de mesure provenant de l'API StableNet® ou de la table de données agrégées. La source de données doit être définie sur le 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
Les données relatives aux appareils et aux mesures ne changeant pas très souvent, cette requête doit être matérialisée. Les performances s’en trouveront considérablement améliorées.
Définissez l’intervalle de rafraîchissement sur « quotidien » et créez des index pour tous les attributs :
Joint d’une table externe pour les données en temps réel
En plus de la requête de données matérialisée préparée, les données provenant de l’API StableNet® peuvent être jointes à l’aide d’une table externe.
Dans l’exemple suivant, le mot-clé FROM fait référence à 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 exprimé en mots tels que heure, jour, mois, etc.
metric_name : un nom de métrique StableNet® valide, tel que « Round Trip Time »
Au lieu de l’attribut metric_name, essayez d’utiliser 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 étrangères.
Le mot-clé FROM dans l’exemple suivant fait référence à 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 d’exemple :
begin/end : horodatage ISO 8601, par exemple 2024-05-01T00:00:00Z
metric_name : un nom de métrique StableNet® valide, tel que « Round Trip Time »
Au lieu de l’attribut 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 | Qualificateurs |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bien que measurement_id et metric_key soient facultatifs, il n’est pas recommandé d’exécuter des requêtes sans eux. Cela entraînerait la lecture des données de toutes les mesures et de tous les indicateurs, ce qui pourrait prendre beaucoup de temps et imposer une charge importante au server StableNet. Cette méthode n’est conseillée que pour des plages de temps très courtes (< 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. Elles peuvent être utilisées pour effectuer des requêtes analytiques portant 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 au bout de 7 jours.
Nom | Champs |
|---|---|
|
|
stablenet_measurement_data_aggregated Ne contient que les données correspondant aux clés de métriques configurées.


