Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!

InfluxDB: Gruppera data per timme, men ignorera datumkomponenten

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jul 2007

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

WS: Bärbar workstation, 2 * Dell U2412M
HTPC: Intel NUC, Canton GLE 496, Yamaha RV-A830, Sanyo PLV-Z700
Server: Intel Xeon E3-1240@3.4 GHz, ESXi, 32GB RAM, 8*2TB RAID-Z2 + SSD-cache
Slösurf: MacBook Air 11,6", Samsung S8
Kamera: Canon EOS 5DII + 1DIII, Canon 100/2.8 Macro, Canon 70-200/2.8L, Canon 24-70/2.8L

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Aug 2007

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"

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jul 2007
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å?

WS: Bärbar workstation, 2 * Dell U2412M
HTPC: Intel NUC, Canton GLE 496, Yamaha RV-A830, Sanyo PLV-Z700
Server: Intel Xeon E3-1240@3.4 GHz, ESXi, 32GB RAM, 8*2TB RAID-Z2 + SSD-cache
Slösurf: MacBook Air 11,6", Samsung S8
Kamera: Canon EOS 5DII + 1DIII, Canon 100/2.8 Macro, Canon 70-200/2.8L, Canon 24-70/2.8L

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Aug 2007

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