

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à.

# 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
```