Per funzionalità simili a Amazon Timestream for, prendi in considerazione Amazon Timestream LiveAnalytics per InfluxDB. Offre un'acquisizione semplificata dei dati e tempi di risposta alle query di una sola cifra di millisecondi per analisi in tempo reale. Scopri di più qui.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Visualizzazioni delle serie temporali
Timestream for LiveAnalytics supporta le seguenti funzioni per trasformare i dati nel tipo di dati: timeseries
Argomenti
CREATE_TIME_SERIES
CREATE_TIME_SERIES è una funzione di aggregazione che prende tutte le misurazioni non elaborate di una serie temporale (valori temporali e di misura) e restituisce un tipo di dati di serie temporali. La sintassi di questa funzione è la seguente:
CREATE_TIME_SERIES(time, measure_value::
<data_type>
)
where <data_type>
è il tipo di dati del valore della misura e può essere uno tra bigint, boolean, double o varchar. Il secondo parametro non può essere nullo.
Considerate l'utilizzo della CPU delle EC2 istanze archiviate in una tabella denominata metrics come illustrato di seguito:
Orario | Regione | az | vpc | instance_id | measure_name | measure_value::double |
---|---|---|---|---|---|---|
2019-12-04 19:00:00.000 000000 |
us-east-1 |
Stati Uniti est-1d |
vpc-1a2b3c4d |
i-1234567890abcdef0 |
utilizzo della cpu_ |
35,0 |
2019-12-04 19:00:01.000 000000 |
us-east-1 |
Stati Uniti est-1d |
vpc-1a2b3c4d |
i-1234567890abcdef0 |
utilizzo della cpu_ |
38.2 |
2019-12-04 19:00:02,000 000000 |
us-east-1 |
Stati Uniti - est-1d |
vpc-1a2b3c4d |
i-1234567890abcdef0 |
utilizzo della cpu_ |
45,3 |
2019-12-04 19:00:00.000 000000 |
us-east-1 |
Stati Uniti est-1d |
vpc-1a2b3c4d |
i-1234567890abcdef1 |
cpu_utilization |
54.1 |
2019-12-04 19:00:01.000 000000 |
us-east-1 |
Stati Uniti est-1d |
vpc-1a2b3c4d |
i-1234567890abcdef1 |
cpu_utilization |
42,5 |
2019-12-04 19:00:02,000 000000 |
us-east-1 |
Stati Uniti - est-1d |
vpc-1a2b3c4d |
i-1234567890abcdef1 |
cpu_utilization |
33.7 |
Esecuzione della query:
SELECT region, az, vpc, instance_id, CREATE_TIME_SERIES(time, measure_value::double) as cpu_utilization FROM metrics WHERE measure_name=’cpu_utilization’ GROUP BY region, az, vpc, instance_id
restituirà tutte le serie che hanno cpu_utilization
come valore di misura. In questo caso, abbiamo due serie:
Regione | az | vpc | instance_id | cpu_utilization |
---|---|---|---|---|
us-east-1 |
us-east-1d |
vpc-1a2b3c4d |
i-1234567890abcdef0 |
[{ora: 2019-12-04 19:00:00.000 000000, valore_misura: :doppio: 35.0}, {ora: 2019-12-04 19:00:01.000 000000, valore_misura: :doppio: 38.2}, {ora: 2019-12-04 19:00:02.000 000000, valore_misura: :doppio: 45,3}] |
us-east-1 |
us-east-1d |
vpc-1a2b3c4d |
i-1234567890abcdef1 |
[{ora: 2019-12-04 19:00:00.000 000000, valore_misura: :doppio: 35.1}, {ora: 2019-12-04 19:00:01.000 000000, valore_misura: :doppio: 38,5}, {ora: 2019-12-04 19:00:02.000 000000, valore_misura: :doppio: 45,7}] |
UNNEST
UNNEST
è una funzione di tabella timeseries
che consente di trasformare i dati in un modello piatto. La sintassi è esposta di seguito:
UNNEST
timeseries
trasforma a in due colonne, vale a dire time
evalue
. Puoi anche usare alias con UNNEST come mostrato di seguito:
UNNEST(timeseries) AS
<alias_name>
(time_alias
,value_alias
)
dove <alias_name>
è l'alias per la tabella piatta, time_alias
è l'alias per la time
colonna ed value_alias
è l'alias per la colonna. value
Ad esempio, considera lo scenario in cui alcune istanze del tuo parco EC2 istanze sono configurate per emettere metriche a intervalli di 5 secondi, altre emettono metriche a intervalli di 15 secondi e hai bisogno delle metriche medie per tutte le istanze con una granularità di 10 secondi nelle ultime 6 ore. Per ottenere questi dati, trasformate le metriche nel modello di serie temporali utilizzando CREATE_TIME_SERIES. È quindi possibile utilizzare INTERPOLATE_LINEAR per ottenere i valori mancanti con una granularità di 10 secondi. Successivamente, trasformi i dati in un modello piatto utilizzando UNNEST, quindi usi AVG per ottenere le metriche medie per tutte le istanze.
WITH interpolated_timeseries AS ( SELECT region, az, vpc, instance_id, INTERPOLATE_LINEAR( CREATE_TIME_SERIES(time, measure_value::double), SEQUENCE(ago(6h), now(), 10s)) AS interpolated_cpu_utilization FROM timestreamdb.metrics WHERE measure_name= ‘cpu_utilization’ AND time >= ago(6h) GROUP BY region, az, vpc, instance_id ) SELECT region, az, vpc, instance_id, avg(t.cpu_util) FROM interpolated_timeseries CROSS JOIN UNNEST(interpolated_cpu_utilization) AS t (time, cpu_util) GROUP BY region, az, vpc, instance_id
La query precedente dimostra l'uso di UNNEST con un alias. Di seguito è riportato un esempio della stessa query senza utilizzare un alias per UNNEST:
WITH interpolated_timeseries AS ( SELECT region, az, vpc, instance_id, INTERPOLATE_LINEAR( CREATE_TIME_SERIES(time, measure_value::double), SEQUENCE(ago(6h), now(), 10s)) AS interpolated_cpu_utilization FROM timestreamdb.metrics WHERE measure_name= ‘cpu_utilization’ AND time >= ago(6h) GROUP BY region, az, vpc, instance_id ) SELECT region, az, vpc, instance_id, avg(value) FROM interpolated_timeseries CROSS JOIN UNNEST(interpolated_cpu_utilization) GROUP BY region, az, vpc, instance_id