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à.
Interrogazioni con funzioni aggregate
Di seguito è riportato un esempio di set di dati di esempio di scenario IoT per illustrare le query con funzioni aggregate.
Argomenti
Dati di esempio
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 |
posizione |
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 |
posizione |
null |
40.7128 gradi N, 74.0060 gradi W |
Query di esempio
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