Interrogazione di StableNet
Questa sezione si applica esclusivamente ai sistemi integrati con StableNet®
I dati StableNet® possono essere interrogati sia da un set di dati aggregati presente in un database SKOOR locale, sia in tempo reale tramite l'API StableNet®. Le seguenti linee guida aiutano a combinare e ottimizzare questi due metodi.
Preparare una query sui dati materializzati per dispositivi e misurazioni
La seguente query di esempio fornisce dati di base da utilizzare con un widget FilterMatrix (ad es. filtro per dispositivi o misurazioni), oltre a consentire di unire i dati di misurazione provenienti dall’API di StableNet® o dalla tabella dei dati aggregati. L’origine dati deve essere impostata su uno dei tipi 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
Poiché i dati relativi ai dispositivi e alle misurazioni non cambiano molto spesso, questa query dovrebbe essere materializzata. Le prestazioni ne risulteranno notevolmente migliorate.
Impostare l’intervallo di aggiornamento su «giornaliero» e creare indici per tutti gli attributi:
Unire una tabella esterna per i dati in tempo reale
Oltre alla query sui dati materializzati preparata in precedenza, è possibile unire i dati provenienti dall’API StableNet® utilizzando una tabella esterna.
La parola chiave FROM nell’esempio seguente fa riferimento alla query materializzata preparata in precedenza.
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}
Nella dashboard o nell’anteprima dei dati, per questa query di esempio è necessario impostare i seguenti attributi:
begin/end: timestamp ISO 8601, ad es. 2024-05-01T00:00:00Z
bucket_size: intervallo di tempo espresso in unità quali ora, giorno, mese, ecc.
metric_name: un nome di metrica StableNet® valido, ad esempio Round Trip Time
Al posto di metric_name, prova a utilizzare l’attributo metric_key nella clausola WHERE per selezionare una metrica specifica se ne sono disponibili più di una
Unire la tabella dei dati aggregati
Se le prestazioni sono più importanti dei dati in tempo reale, è preferibile utilizzare la tabella dei dati aggregati anziché le tabelle esterne.
La parola chiave FROM nell’esempio seguente fa riferimento alla query materializzata preparata in precedenza.
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}
Nella dashboard o nell’anteprima dei dati, per questa query di esempio devono essere impostati i seguenti attributi:
begin/end: timestamp ISO 8601, ad es. 2024-05-01T00:00:00Z
metric_name: un nome di metrica StableNet® valido, come Round Trip Time
Invece di «metric_name», provare a utilizzare l’attributo «metric_key» nella clausola WHERE per selezionare una metrica specifica se ne è disponibile più di una
Tabelle esterne
Nome | Campi | Qualificatori |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sebbene measurement_id e metric_key siano opzionali, non è consigliabile eseguire query senza di essi. In tal caso, vengono letti i dati di tutte le misurazioni e di tutte le metriche, operazione che potrebbe richiedere molto tempo e comportare un carico elevato sul server StableNet. Consigliabile solo per intervalli di tempo molto brevi < 1h. Se sono necessarie più misurazioni e metriche, è opportuno utilizzare la tabella stablenet_measurement_data_aggregated.
Dati di misurazione aggregati
Aggregati su base oraria, aggiornati automaticamente ogni ora. Possono essere utilizzati per eseguire query analitiche su un’ampia gamma di misurazioni e su intervalli di tempo estesi.
Si tratta fondamentalmente di un’ipertabella Timescale (https://docs.timescale.com/). La dimensione dei blocchi è di 7 giorni; i blocchi vengono compressi dopo 7 giorni.
Nome | I campi |
|---|---|
|
|
stablenet_measurement_data_aggregated contiene solo i dati relativi alle chiavi metriche configurate.


