Thread 2 Zeitreihen verknüpfen
(18 answers)
Opened by kami at 2011-01-24 17:24
Ich finde, die Beschreibung, was passieren soll, ist immer noch nicht so ganz eindeutig, aber mir fallen spontan zwei relativ sinnvolle Lösungen ein. Die folgenden Beispiele habe ich mit SQLite 3 getestet.
Bevor wir richtig anfangen, tragen wir erstmal die Testdaten ein: Code: (dl
)
1 CREATE TABLE Table1 (stamp REAL, value REAL, PRIMARY KEY (stamp)); Eine Möglichkeit wäre nun, zunächst zu jedem Zeitstempel in Table1 den größten kleineren Zeitstempel in Table2 und dann zu den beiden Zeitstempeln die dazugehörigen Werte aus den beiden Tabellen zu suchen: Code: (dl
)
1 SELECT datetime(Table1.stamp), Table1.value, Table2.value Ergebnis: Code: (dl
)
1 2010-12-28 23:29:40|561.24| Wenn man die Zeitstempel aus Table1 weiter einschränken möchte, kann man entweder im inneren oder im äußeren SELECT-Befehl eine WHERE-Klausel einfügen, die für Table1.stamp eine Bedingung angibt. Effizienter dürfte es sein, das im inneren SELECT-Befehl zu tun. Eine weitere Möglichkeit wäre, zu jedem Zeitstempel in Table1 alle Zeitstempel in Table2 zu suchen, die in der näheren Umgebung liegen, den Wert in Table1 direkt zu übernehmen und aus den dazugehörigen Werten in Table1 einen Durchschnitt zu bilden: Code: (dl
)
1 SELECT datetime(Table1.stamp), Table1.value, Ergebnis: Code: (dl
)
1 2010-12-28 23:29:40|561.24|2|23.5 Auch hier kann man selbstverständlich eine WHERE-Klausel anfügen, um den Bereich ausgewählter Zeitstempel einzuschränken. Ebenso kann man natürlich das Auswahlfenster von ±0.005 Tagen, entsprechend etwa 15 Minuten, für die sekundären Zeitstempel um die primären herum je nach Bedarf anpassen. When C++ is your hammer, every problem looks like your thumb.
|