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 sur 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é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 à utiliser avec un widget FilterMatrix (par exemple, un filtre pour les appareils ou les mesures) ainsi que pour 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 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
Étant donné que 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 s'en trouveront considérablement améliorées.
Définissez l'intervalle de rafraîchissement comme étant quotidien et créez des index pour tous les attributs :
Joindre une table étrangère 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 de l'API StableNet® peuvent être jointes à l'aide d'une table étrangère.
Le mot-clé FROM dans l'exemple suivant renvoie à 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 cet exemple de requête :
début/fin : Horodatage ISO 8601, par exemple 2024-05-01T00:00:00Z
bucket_size : Période de temps en mots comme l'heure, le jour, le mois, etc.
metric_name : Un nom de métrique StableNet® valide comme Round Trip Time (temps de trajet aller-retour)
Au lieu du nom de la métrique, essayez l'attribut metric_key dans la clause WHERE pour sélectionner une métrique spécifique si plusieurs sont disponibles.
Joindre une table de données agrégées
Si les performances sont plus importantes que les données en temps réel, la table de données agrégées doit être préférée aux tables étrangères.
Le mot-clé FROM dans l'exemple suivant renvoie à 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 cet exemple de requête :
début/fin : Horodatage ISO 8601, par exemple 2024-05-01T00:00:00Z
metric_name : Un nom de métrique StableNet® valide comme Round Trip Time (temps de trajet aller-retour)
Au lieu du nom de la métrique, essayez l'attribut metric_key dans la clause WHERE pour sélectionner une métrique spécifique si plusieurs sont disponibles.
Tables étrangères
Nom de la table | Champs | Qualificatifs |
---|---|---|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bien que measurement_id
et metric_key
soient optionnels, il n'est pas recommandé d'exécuter des requêtes sans eux. En effet, les données de toutes les mesures et de toutes les métriques sont lues, ce qui peut prendre beaucoup de temps et imposer une charge importante au serveur StableNet. Cela n'est conseillé que pour des périodes très courtes < 1h. Si plusieurs mesures et métriques sont nécessaires, la table stablenet_measurement_data_aggregated
doit être utilisée.
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 grandes plages de temps.
Il s'agit essentiellement d'une échelle de temps hypertable(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 des données pour les clés métriques configurées.