InfluxDB: Gruppera data per timme, men ignorera datumkomponenten

Permalänk
Medlem

InfluxDB: Gruppera data per timme, men ignorera datumkomponenten

Hej!

Jag är relativt ny på Influx och har extremt dålig koll på detta.

Jag har data sedan ett halvår, där jag mäter huseffekten (med hjälp av en Sparsnäs som skjuter, via omvägar, in datat i Influx).

Jag skulle vilja ha ut en "dygnsprofil", och i SQL skulle det se ut typ så här:

SELECT DATEPART('Minute', timestamp) AS Minute, DATEPART('Hour', timestamp) AS Hour, AVG(value) FROM ha WHERE entity_id='house_effect' AND unit = 'W' GROUP BY DATEPART('Hour', timestamp), DATEPART('Minute', timestamp)

Men hur kan jag åstadkomma detta i Influx? Går det ens en gång, eller ska jag lura på något vis att trolla ut datat som finns lagrat in till en annan plattform och ta det vidare därifrån?

Tack på förhand,
zyber

Visa signatur

Jag är en optimist; det är aldrig så dåligt så att det inte kan bli sämre.

Permalänk

Om du använder Influx 1.x så är queryt ungefär detta:

select avg(value) from ha where entity_id = 'house_effect' and unit = 'W' group by time(1m)

Med hjälp av det så bör du få ut data liknande ditt SQL query. Du skrev att du ville ha dygnsprofil. Då kan du välja att gruppera på "1d" istället för "1m"

Permalänk
Medlem
Skrivet av luddecraft:

Om du använder Influx 1.x så är queryt ungefär detta:

select avg(value) from ha where entity_id = 'house_effect' and unit = 'W' group by time(1m)

Med hjälp av det så bör du få ut data liknande ditt SQL query. Du skrev att du ville ha dygnsprofil. Då kan du välja att gruppera på "1d" istället för "1m"

Jag tror du missförstår mig (och jag är antagligen otydlig).

Jag vill inte veta ett visst dygns snitt, jag vill veta alla dygns snitt.

Jag vill alltså ta in alla värden från säg 2020-01-01 tom 2020-06-30, men utdatat ska vara en icke dygnsgiven graf från 00:00 till 23:59, där snittet för varje visad tidpunkt är snittet för alla dygn vid just den tidpunkten.

Ett väldigt simpelt exempel:
Mellan 2020-01-01 00:00 till 11:59 låg effektuttnyttjandet på 500 W.
Mellan 2020-01-01 12:00 till 23:50 låg det på 700 W.
Mellan 2020-01-02 00:00 till 11:59 var det 500 W igen
Mellan 2020-01-02 12:00 till 23:59 låg det på ynka 100 W.

Då vill jag få ut:
00:00-11:59 500W
12:00-23:59 400W (dvs (700W+100W)/2)

Blir problembilden tydligare då?

Visa signatur

Jag är en optimist; det är aldrig så dåligt så att det inte kan bli sämre.

Permalänk

Ja, jag var nog aningen trött igår kväll.
On du använder version 2.x så kan du använda lösningen i https://github.com/influxdata/influxdb/issues/6723

Om du använder version 1.x så blir det svårare. Jag hade försökt lösa det med två measurements. Det ena in håller alla mätpunkter (det har du idag) och det andra skulle jag försöka gruppera per timme och där försöka spara med i en tag vilken timme det var (som du gör med sql).