

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](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html) 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à.

# Funzioni delle serie temporali
<a name="timeseries-specific-constructs.functions"></a>

Amazon Timestream LiveAnalytics for supporta funzioni di serie temporali, come derivati, integrali e correlazioni, oltre ad altre, per ricavare informazioni più approfondite dai dati delle serie temporali. Questa sezione fornisce informazioni sull'utilizzo di ciascuna di queste funzioni, oltre a query di esempio. Seleziona uno dei seguenti argomenti per saperne di più. 

**Topics**
+ [Funzioni di interpolazione](timeseries-specific-constructs.functions.interpolation.md)
+ [Funzioni derivate](timeseries-specific-constructs.functions.derivatives.md)
+ [Funzioni integrali](timeseries-specific-constructs.functions.integrals.md)
+ [Funzioni di correlazione](timeseries-specific-constructs.functions.correlation.md)
+ [Filtra e riduci le funzioni](timeseries-specific-constructs.functions.filter-reduce.md)

# Funzioni di interpolazione
<a name="timeseries-specific-constructs.functions.interpolation"></a>

Se nei dati delle serie temporali mancano valori per gli eventi in determinati momenti, puoi stimare i valori di tali eventi mancanti utilizzando l'interpolazione. Amazon Timestream supporta quattro varianti di interpolazione: interpolazione lineare, interpolazione spline cubica, interpolazione dell'ultima osservazione portata avanti (locf) e interpolazione costante. Questa sezione fornisce informazioni sull'utilizzo di Timestream per le funzioni di interpolazione, oltre a query di esempio. LiveAnalytics 



## Informazioni sull'utilizzo
<a name="w2aab7c59c13c13c11b7"></a>


| Funzione | Tipo di dati di output | Description | 
| --- | --- | --- | 
|  `interpolate_linear(timeseries, array[timestamp])`  |  serie temporali  |  [Compila i dati mancanti utilizzando l'interpolazione lineare.](https://wikipedia.org/wiki/Linear_interpolation)  | 
|  `interpolate_linear(timeseries, timestamp)`  |  virgola mobile a doppia precisione  |  [Compila i dati mancanti utilizzando l'interpolazione lineare.](https://wikipedia.org/wiki/Linear_interpolation)  | 
|  `interpolate_spline_cubic(timeseries, array[timestamp])`  |  serie temporali  |  Compila i dati mancanti utilizzando l'interpolazione spline [cubica](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_spline_cubic(timeseries, timestamp)`  |  virgola mobile a doppia precisione  |  [Compila i dati mancanti utilizzando l'interpolazione spline cubica.](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.)  | 
|  `interpolate_locf(timeseries, array[timestamp])`  |  serie temporali  |  Compila i dati mancanti utilizzando l'ultimo valore campionato.  | 
|  `interpolate_locf(timeseries, timestamp)`  |  virgola mobile a doppia precisione  |  Compila i dati mancanti utilizzando l'ultimo valore campionato.  | 
|  `interpolate_fill(timeseries, array[timestamp], double)`  |  serie temporali  |  Compila i dati mancanti utilizzando un valore costante.  | 
|  `interpolate_fill(timeseries, timestamp, double)`  |  virgola mobile a doppia precisione  |  Compila i dati mancanti utilizzando un valore costante.  | 

## Esempi di query
<a name="w2aab7c59c13c13c11b9"></a>

**Example**  
Trova l'utilizzo medio della CPU registrato a intervalli di 30 secondi per uno specifico host EC2 nelle ultime 2 ore, inserendo i valori mancanti utilizzando l'interpolazione lineare:  

```
WITH binned_timeseries AS (
SELECT hostname, BIN(time, 30s) AS binned_timestamp, ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization
FROM "sampleDB".DevOps
WHERE measure_name = 'cpu_utilization'
    AND hostname = 'host-Hovjv'
    AND time > ago(2h)
GROUP BY hostname, BIN(time, 30s)
), interpolated_timeseries AS (
SELECT hostname,
    INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(binned_timestamp, avg_cpu_utilization),
            SEQUENCE(min(binned_timestamp), max(binned_timestamp), 15s)) AS interpolated_avg_cpu_utilization
FROM binned_timeseries
GROUP BY hostname
)
SELECT time, ROUND(value, 2) AS interpolated_cpu
FROM interpolated_timeseries
CROSS JOIN UNNEST(interpolated_avg_cpu_utilization)
```

**Example**  
Trova l'utilizzo medio della CPU eseguito a intervalli di 30 secondi per uno specifico host EC2 nelle ultime 2 ore, inserendo i valori mancanti utilizzando l'interpolazione basata sull'ultima osservazione riportata:  

```
WITH binned_timeseries AS (
SELECT hostname, BIN(time, 30s) AS binned_timestamp, ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization
FROM "sampleDB".DevOps
WHERE measure_name = 'cpu_utilization'
    AND hostname = 'host-Hovjv'
    AND time > ago(2h)
GROUP BY hostname, BIN(time, 30s)
), interpolated_timeseries AS (
SELECT hostname,
    INTERPOLATE_LOCF(
        CREATE_TIME_SERIES(binned_timestamp, avg_cpu_utilization),
            SEQUENCE(min(binned_timestamp), max(binned_timestamp), 15s)) AS interpolated_avg_cpu_utilization
FROM binned_timeseries
GROUP BY hostname
)
SELECT time, ROUND(value, 2) AS interpolated_cpu
FROM interpolated_timeseries
CROSS JOIN UNNEST(interpolated_avg_cpu_utilization)
```

# Funzioni derivate
<a name="timeseries-specific-constructs.functions.derivatives"></a>

I derivati vengono utilizzati per calcolare il tasso di variazione di una determinata metrica e possono essere utilizzati per rispondere in modo proattivo a un evento. Ad esempio, supponiamo di calcolare il derivato dell'utilizzo della CPU delle istanze EC2 negli ultimi 5 minuti e di notare un derivato positivo significativo. Questo può essere indicativo di una maggiore domanda per il tuo carico di lavoro, quindi potresti decidere di avviare più istanze EC2 per gestire meglio il tuo carico di lavoro. 

Amazon Timestream supporta due varianti di funzioni derivate. Questa sezione fornisce informazioni sull'utilizzo di Timestream per le funzioni LiveAnalytics derivate, oltre a query di esempio. 



## Informazioni sull'utilizzo
<a name="w2aab7c59c13c13c13b9"></a>


| Funzione | Tipo di dati di output | Description | 
| --- | --- | --- | 
|  `derivative_linear(timeseries, interval)`  |  serie temporali  |  Calcola la [derivata](https://wikipedia.org/wiki/Derivative) di ogni punto per il `timeseries` valore specificato. `interval`  | 
|  `non_negative_derivative_linear(timeseries, interval)`  |  serie temporali  |  Uguale a`derivative_linear(timeseries, interval)`, ma restituisce solo valori positivi.  | 

## Esempi di query
<a name="w2aab7c59c13c13c13c11"></a>

**Example**  
Calcola la velocità di variazione dell'utilizzo della CPU ogni 5 minuti nell'ultima ora:  

```
SELECT DERIVATIVE_LINEAR(CREATE_TIME_SERIES(time, measure_value::double), 5m) AS result 
FROM “sampleDB”.DevOps 
WHERE measure_name = 'cpu_utilization' 
AND hostname = 'host-Hovjv' and time > ago(1h) 
GROUP BY hostname, measure_name
```

**Example**  
Calcola il tasso di aumento degli errori generati da uno o più microservizi:  

```
WITH binned_view as (
    SELECT bin(time, 5m) as binned_timestamp, ROUND(AVG(measure_value::double), 2) as value            
    FROM “sampleDB”.DevOps  
    WHERE micro_service = 'jwt'  
    AND time > ago(1h) 
    AND measure_name = 'service_error'
    GROUP BY bin(time, 5m)
)
SELECT non_negative_derivative_linear(CREATE_TIME_SERIES(binned_timestamp, value), 1m) as rateOfErrorIncrease
FROM binned_view
```

# Funzioni integrali
<a name="timeseries-specific-constructs.functions.integrals"></a>

Puoi usare gli integrali per trovare l'area sotto la curva per unità di tempo per gli eventi delle serie temporali. Ad esempio, supponiamo di tenere traccia del volume di richieste ricevute dall'applicazione per unità di tempo. In questo scenario, puoi utilizzare la funzione integrale per determinare il volume totale di richieste servite per intervallo specificato in un periodo di tempo specifico.

Amazon Timestream supporta una variante di funzioni integrali. Questa sezione fornisce informazioni sull'utilizzo della funzione Timestream for LiveAnalytics Integral, oltre a query di esempio. 



## Informazioni sull'utilizzo
<a name="w2aab7c59c13c13c15b9"></a>


| Funzione | Tipo di dati di output | Description | 
| --- | --- | --- | 
|  `integral_trapezoidal(timeseries(double))` `integral_trapezoidal(timeseries(double), interval day to second)` `integral_trapezoidal(timeseries(bigint))` `integral_trapezoidal(timeseries(bigint), interval day to second)` `integral_trapezoidal(timeseries(integer), interval day to second)` `integral_trapezoidal(timeseries(integer))`  |  virgola mobile a doppia precisione  |  Approssima l'[integrale](https://wikipedia.org/wiki/Integral) secondo quanto specificato `interval day to second` per il modulo `timeseries` fornito, utilizzando la regola [trapezoidale](https://wikipedia.org/wiki/Trapezoidal_rule). Il parametro dell'intervallo dal giorno al secondo è facoltativo e l'impostazione predefinita è. `1s` Per ulteriori informazioni sugli intervalli, vedere. [Intervallo e durata](date-time-functions.md#date-time-functions-interval-duration)  | 

## Esempi di query
<a name="w2aab7c59c13c13c15c11"></a>

**Example**  
Calcola il volume totale di richieste servite ogni cinque minuti nell'ultima ora da un host specifico:  

```
SELECT INTEGRAL_TRAPEZOIDAL(CREATE_TIME_SERIES(time, measure_value::double), 5m) AS result FROM sample.DevOps 
WHERE measure_name = 'request' 
AND hostname = 'host-Hovjv' 
AND time > ago (1h) 
GROUP BY hostname, measure_name
```

# Funzioni di correlazione
<a name="timeseries-specific-constructs.functions.correlation"></a>

Considerate due serie temporali di lunghezza simile, le funzioni di correlazione forniscono un coefficiente di correlazione, che spiega l'andamento delle due serie temporali nel tempo. Il coefficiente di correlazione varia da a. `-1.0` `1.0` `-1.0`indica che le due serie temporali hanno una tendenza in direzioni opposte alla stessa velocità, mentre `1.0` indica che le due serie temporali tendono nella stessa direzione alla stessa velocità. Un valore di `0` indica l'assenza di correlazione tra le due serie temporali. Ad esempio, se il prezzo del petrolio aumenta e il prezzo delle azioni di una compagnia petrolifera aumenta, la tendenza all'aumento del prezzo del petrolio e all'aumento del prezzo della compagnia petrolifera avrà un coefficiente di correlazione positivo. Un coefficiente di correlazione positivo elevato indicherebbe che i due prezzi hanno un andamento simile. Analogamente, il coefficiente di correlazione tra i prezzi delle obbligazioni e i rendimenti obbligazionari è negativo, il che indica che questi due valori tendono nella direzione opposta nel tempo.

Amazon Timestream supporta due varianti di funzioni di correlazione. Questa sezione fornisce informazioni sull'utilizzo di Timestream per le funzioni di LiveAnalytics correlazione, oltre a query di esempio. 



## Informazioni sull'utilizzo
<a name="w2aab7c59c13c13c19c11"></a>


| Funzione | Tipo di dati di output | Description | 
| --- | --- | --- | 
|  `correlate_pearson(timeseries, timeseries)`  |  virgola mobile a doppia precisione  |  Calcola il [coefficiente di correlazione di Pearson](https://wikipedia.org/wiki/Pearson_correlation_coefficient) per i due. `timeseries` Le serie temporali devono avere gli stessi timestamp.  | 
|  `correlate_spearman(timeseries, timeseries)`  |  virgola mobile a doppia precisione  |  Calcola il coefficiente di [correlazione di Spearman](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient) per i due. `timeseries` Le serie temporali devono avere gli stessi timestamp.  | 

## Esempi di query
<a name="w2aab7c59c13c13c19c13"></a>

**Example**  

```
WITH cte_1 AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, measure_value::double), 
        SEQUENCE(min(time), max(time), 10m)) AS result 
    FROM sample.DevOps 
    WHERE measure_name = 'cpu_utilization' 
    AND hostname = 'host-Hovjv' AND time > ago(1h) 
    GROUP BY hostname, measure_name
), 
cte_2 AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, measure_value::double), 
        SEQUENCE(min(time), max(time), 10m)) AS result 
    FROM sample.DevOps 
    WHERE measure_name = 'cpu_utilization' 
    AND hostname = 'host-Hovjv' AND time > ago(1h) 
    GROUP BY hostname, measure_name
) 
SELECT correlate_pearson(cte_1.result, cte_2.result) AS result 
FROM cte_1, cte_2
```

# Filtra e riduci le funzioni
<a name="timeseries-specific-constructs.functions.filter-reduce"></a>

Amazon Timestream supporta funzioni per l'esecuzione di filtri e la riduzione delle operazioni sui dati delle serie temporali. Questa sezione fornisce informazioni sull'utilizzo di Timestream per le funzioni di LiveAnalytics filtro e riduzione, oltre a query di esempio. 



## Informazioni sull'utilizzo
<a name="w2aab7c59c13c13c23b7"></a>


| Funzione | Tipo di dati di output | Description | 
| --- | --- | --- | 
|  `filter(timeseries(T), function(T, Boolean))`  |  serie temporali (T)  |  Costruisce una serie temporale da una serie temporale di input, utilizzando i valori per i quali il passato restituisce. `function` `true`  | 
|  `reduce(timeseries(T), initialState S, inputFunction(S, T, S), outputFunction(S, R))`  |  R  |  Restituisce un singolo valore, ridotto dalla serie temporale. `inputFunction`Verrà invocato su ogni elemento delle serie temporali in ordine. Oltre a prendere l'elemento corrente, InputFunction prende lo stato corrente (inizialmente`initialState`) e restituisce il nuovo stato. `outputFunction`Verrà invocato per trasformare lo stato finale nel valore del risultato. `outputFunction`Può essere una funzione di identità.  | 

## Esempi di query
<a name="w2aab7c59c13c13c23b9"></a>

**Example**  
Costruisci una serie temporale di utilizzo della CPU di un host e filtra i punti con misurazioni superiori a 70:  

```
WITH time_series_view AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, ROUND(measure_value::double,2)), 
            SEQUENCE(ago(15m), ago(1m), 10s)) AS cpu_user
    FROM sample.DevOps
    WHERE hostname = 'host-Hovjv' and measure_name = 'cpu_utilization'
        AND time > ago(30m)
    GROUP BY hostname
)
SELECT FILTER(cpu_user, x -> x.value > 70.0) AS cpu_above_threshold
from time_series_view
```

**Example**  
Costruisci una serie temporale dell'utilizzo della CPU di un host e determina la somma al quadrato delle misurazioni:  

```
WITH time_series_view AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, ROUND(measure_value::double,2)), 
            SEQUENCE(ago(15m), ago(1m), 10s)) AS cpu_user
    FROM sample.DevOps
    WHERE hostname = 'host-Hovjv' and measure_name = 'cpu_utilization'
        AND time > ago(30m)
    GROUP BY hostname
)
SELECT REDUCE(cpu_user,
    DOUBLE '0.0',
    (s, x) -> x.value * x.value + s,
    s -> s)
from time_series_view
```

**Example**  
Costruisci una serie temporale di utilizzo della CPU di un host e determina la frazione di campioni che supera la soglia della CPU:  

```
WITH time_series_view AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, ROUND(measure_value::double,2)), 
            SEQUENCE(ago(15m), ago(1m), 10s)) AS cpu_user
    FROM sample.DevOps
    WHERE hostname = 'host-Hovjv' and measure_name = 'cpu_utilization'
        AND time > ago(30m)
    GROUP BY hostname
)
SELECT ROUND(
    REDUCE(cpu_user, 
      -- initial state 
      CAST(ROW(0, 0) AS ROW(count_high BIGINT, count_total BIGINT)),
      -- function to count the total points and points above a certain threshold
      (s, x) -> CAST(ROW(s.count_high + IF(x.value > 70.0, 1, 0), s.count_total + 1) AS ROW(count_high BIGINT, count_total BIGINT)),
      -- output function converting the counts to fraction above threshold
      s -> IF(s.count_total = 0, NULL, CAST(s.count_high AS DOUBLE) / s.count_total)), 
    4) AS fraction_cpu_above_threshold
from time_series_view
```