

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

# Interrogazioni con funzioni aggregate
<a name="sample-queries.iot-scenarios"></a>

Di seguito è riportato un esempio di set di dati di esempio di scenario IoT per illustrare le query con funzioni aggregate.

**Topics**
+ [Dati di esempio](#sample-queries.iot-scenarios.example-data)
+ [Query di esempio](#sample-queries.iot-scenarios.example-queries)

## Dati di esempio
<a name="sample-queries.iot-scenarios.example-data"></a>

Timestream consente di archiviare e analizzare i dati dei sensori IoT come la posizione, il consumo di carburante, la velocità e la capacità di carico di una o più flotte di camion per consentire una gestione efficace della flotta. Di seguito sono riportati lo schema e alcuni dati di una tabella iot\_trucks che memorizza dati di telemetria come posizione, consumo di carburante, velocità e capacità di carico dei camion.


| Orario | truck\_id | Make | Modello | Parco istanze | capacità\_carburante | capacità\_di carico | measure\_name | measure\_value::double | measure\_value::varchar | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 2019-12-04 19:00:00.000 000000 | 123456781 | GMC | Astro | Alpha (Afa) | 100 | 500 | fuel\_reading | 65,2 | null | 
| 2019-12-04 19:00:00.000 000000 | 123456781 | GMC | Astro | Alpha (Afa) | 100 | 500 | caricare | 400,0 | null | 
| 2019-12-04 19:00:00.000 000000 | 123456781 | GMC | Astro | Alpha (Afa) | 100 | 500 | speed | 90,2 | null | 
| 2019-12-04 19:00:00.000 000000 | 123456781 | GMC | Astro | Alpha (Afa) | 100 | 500 | location | null | 47,6062 NM, 122.321 W | 
| 2019-12-04 19:00:00.000 000000 | 123456782 | Kenworth | W900 | Alpha (Afa) | 150 | 1000 | lettura del carburante | 10.1 | null | 
| 2019-12-04 19:00:00.000 000000 | 123456782 | Kenworth | W900 | Alpha (Afa) | 150 | 1000 | caricare | 950,3 | null | 
| 2019-12-04 19:00:00.000 000000 | 123456782 | Kenworth | W900 | Alpha (Afa) | 150 | 1000 | speed | 50,8 | null | 
| 2019-12-04 19:00:00.000 000000 | 123456782 | Kenworth | W900 | Alpha (Afa) | 150 | 1000 | location | null | 40.7128 gradi N, 74.0060 gradi W | 

## Query di esempio
<a name="sample-queries.iot-scenarios.example-queries"></a>

Ottieni un elenco di tutti gli attributi e i valori dei sensori monitorati per ogni camion della flotta.

```
SELECT
    truck_id,
    fleet,
    fuel_capacity,
    model,
    load_capacity,
    make,
    measure_name
FROM "sampleDB".IoT
GROUP BY truck_id, fleet, fuel_capacity, model, load_capacity, make, measure_name
```

Ottieni i dati più recenti relativi al carburante di ogni camion della flotta nelle ultime 24 ore.

```
WITH latest_recorded_time AS (
    SELECT
        truck_id,
        max(time) as latest_time
    FROM "sampleDB".IoT
    WHERE measure_name = 'fuel-reading'
    AND time >= ago(24h)
    GROUP BY truck_id
)
SELECT
    b.truck_id,
    b.fleet,
    b.make,
    b.model,
    b.time,
    b.measure_value::double as last_reported_fuel_reading
FROM
latest_recorded_time a INNER JOIN "sampleDB".IoT b
ON a.truck_id = b.truck_id AND b.time = a.latest_time
WHERE b.measure_name = 'fuel-reading'
AND b.time > ago(24h)
ORDER BY b.truck_id
```

Identifica i camion che hanno utilizzato poco carburante (meno del 10%) nelle ultime 48 ore:

```
WITH low_fuel_trucks AS (
    SELECT time, truck_id, fleet, make, model, (measure_value::double/cast(fuel_capacity as double)*100) AS fuel_pct
    FROM "sampleDB".IoT
    WHERE time >= ago(48h)
    AND (measure_value::double/cast(fuel_capacity as double)*100) < 10
    AND measure_name = 'fuel-reading'
),
other_trucks AS (
SELECT time, truck_id, (measure_value::double/cast(fuel_capacity as double)*100) as remaining_fuel
    FROM "sampleDB".IoT
    WHERE time >= ago(48h)
    AND truck_id IN (SELECT truck_id FROM low_fuel_trucks)
    AND (measure_value::double/cast(fuel_capacity as double)*100) >= 10
    AND measure_name = 'fuel-reading'
),
trucks_that_refuelled AS (
    SELECT a.truck_id
    FROM low_fuel_trucks a JOIN other_trucks b
    ON a.truck_id = b.truck_id AND b.time >= a.time
)
SELECT DISTINCT truck_id, fleet, make, model, fuel_pct
FROM low_fuel_trucks
WHERE truck_id NOT IN (
    SELECT truck_id FROM trucks_that_refuelled
)
```

Calcola il carico medio e la velocità massima di ogni camion nell'ultima settimana:

```
SELECT
    bin(time, 1d) as binned_time,
    fleet,
    truck_id,
    make,
    model,
    AVG(
        CASE WHEN measure_name = 'load' THEN measure_value::double ELSE NULL END
    ) AS avg_load_tons,
    MAX(
        CASE WHEN measure_name = 'speed' THEN measure_value::double ELSE NULL END
    ) AS max_speed_mph
FROM "sampleDB".IoT
WHERE time >= ago(7d)
AND measure_name IN ('load', 'speed')
GROUP BY fleet, truck_id, make, model, bin(time, 1d)
ORDER BY truck_id
```

Calcola l'efficienza di carico di ogni camion nell'ultima settimana:

```
WITH average_load_per_truck AS (
    SELECT
        truck_id,
        avg(measure_value::double)  AS avg_load
    FROM "sampleDB".IoT
    WHERE measure_name = 'load'
    AND time >= ago(7d)
    GROUP BY truck_id, fleet, load_capacity, make, model
),
truck_load_efficiency AS (
    SELECT
        a.truck_id,
        fleet,
        load_capacity,
        make,
        model,
        avg_load,
        measure_value::double,
        time,
        (measure_value::double*100)/avg_load as load_efficiency -- , approx_percentile(avg_load_pct, DOUBLE '0.9')
    FROM "sampleDB".IoT a JOIN average_load_per_truck b
    ON a.truck_id = b.truck_id
    WHERE a.measure_name = 'load'
)
SELECT
    truck_id,
    time,
    load_efficiency
FROM truck_load_efficiency
ORDER BY truck_id, time
```