Hej Vad är frågan? :) Jo, jag sneglade lite på RRDTool tidigare, men den kändes jobbig, så jag skrev en egen lösning... går det att på nåt sätt få en sqlsats typ: Ifall du har en kolumn som innehåller index för posterna (alltså 1,2,3 o.s.v.) så kan du få ut till exempel var femte post med: problemet är att de inte är kontinuerliga. Du kan använda unix_timestamp för att konvertera datumet till ett tal (sekunder sedan 1970-01-01). Med division och subtraktion får du ut index. Det bästa är nog att hämta allt och sortera ut posterna i din applikation (lite beroende på hur många poster det rör sig om). En rad varje kvart, och varje rad innehåller id, temp, sensor och datum. Som jag ser det måste det kunna gå att använda sql-kommandot AVG - snitt. Om vi säger att du har 5000 poster inom det intervall du vill, säg 1 år. Sen grupperar du per månad eller något alla värden och kommer då få 12 rader i retur innehållande information som du kan plotta. Kan det vara nåt? tja... kanske det Gruppera på månad, dag eller timme, vad som kan vara lämpligt för valt intervall och ta sedan fram medelvärdet som pelle föreslog. Plocka även fram extremvärdena med max och min. Om du gör som pelle sa så kan du ju även göra så att om du klickar på en månad så skriver den ut just den månaden så kan du få det lite bättre sorterat om du nu vill ha med all information.Hämta ett bestämt antal värden jämnt fördelade
Jag har en databas med en massa temperaturvärden lagrade med en kvarts mellanrum.
Sen har jag en grafritare som plottar ut grafer.
Det funkar fint för tillfället, men när systemet varit igång längre så blir det lite väl mycket data att behandla. exempelvis ett år blir 4*24*365=35040 värden, och det blir dels tungjobbat, och framförallt onödigt...
Så min tanke är att plocka ut 100 värden (eller vad som nu blir lämpligt) och ta ut dom med jämna mellanrum från databasen.
Det som krånglar till det lite grann är att jag måste ha med det allra första och det allra sista värdet, samt att det ska gå att rita en graf över exempelvis senaste timmen, och då är det ju bara 5 värden...Sv: Hämta ett bestämt antal värden jämnt fördelade
Har du kollat på RRDTOOL? Det löser dessa "problem" på ett bra sätt.
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
/JohanSv:Hämta ett bestämt antal värden jämnt fördelade
Problemet är som sagt att plocka ut 100 värden (eller vad som nu blir lämpligt) och ta ut dom med jämna mellanrum från databasen.
Alltså, om det är 1000 värden ska den ta var 10:e värde osv.Sv: Hämta ett bestämt antal värden jämnt fördelade
"select * from tabell STEP 5" ?
Kan tillägga att jag kör MySQL.Sv:Hämta ett bestämt antal värden jämnt fördelade
... where (fältet % 5) = 0
Eventuelllt kan du omvandla tidpunkten till ett tal och göra något liknande.Sv: Hämta ett bestämt antal värden jämnt fördelade
Man ska kunna köra where sensor=2 och rita en graf på det.
Så här kan tabellen se ut:
id|temp|sensor|datum
1 |-20 |1|'2005-03-13 18:00:00'
2 |-20.7|0|'2005-03-13 18:00:00'
3 |-21 |2|'2005-03-13 18:00:00'
5 |-21.4|3|'2005-03-13 18:00:00'
6 |-20.5|0|'2005-03-13 18:15:00'
7 |-21.1|2|'2005-03-13 18:15:00'
9 |-19 |1|'2005-03-13 18:15:00'Sv:Hämta ett bestämt antal värden jämnt fördelade
Sv:Hämta ett bestämt antal värden jämnt fördelade
Det borde annars gå att göra såhär för att få ut var tionde post, jag har inte möjlighet att testa på mysql så det kanske inte stämmer helt, men denna principen borde vara rätt. Tänk på att det är helt vansinnigt mot databasservern då den behöver göra en fråga för varje post i tabellen!!!
SELECT temp, datum FROM tabell A WHERE sensor = 2 AND (SELECT COUNT(0) FROM tabell WHERE datum < A.datum) MOD 10 = 0
/JohanSv: Hämta ett bestämt antal värden jämnt fördelade
Om jag räknat rätt så blir det ca 1Meg per år och sensor.Sv:Hämta ett bestämt antal värden jämnt fördelade
Sv: Hämta ett bestämt antal värden jämnt fördelade
nu blir det nog en hackig graf med bara tolv punkter, men jag fattar principen.
Men ju mer jag tänker på det, desto mer övertygad blir jag om att ja måste hämta alla värden och sköta urvalet i applikationen.
man vill ju gärna ha med extremvärdena i en temperaturgraf... frågan är bara hur ofta...Sv:Hämta ett bestämt antal värden jämnt fördelade
/JohanSv:Hämta ett bestämt antal värden jämnt fördelade
Då kan du få med all information du vill ha och även inte ha så tung app.