私は温度データのテーブルを持っており、複数のセンサーで5-15分ごとに更新されています。 データは本質的にユニークなID、デバイス(センサID)、タイムスタンプ、値(フロート) です。センサには正確なクロックがないため、時間の経過とともに読み値が歪んでしまいます。 mysqlの時間ごとにグループ化して、温度データの最後の24時間を読み込みます。 PHPプログラマーとしての私の解決策は、処理されていないすべての読みを読み込んでテーブルに「結合」するプリプロセッサを作ることです。 x-minute/hourを1時間に1つ読んで、グラフを使って使うようにする必要がある私以外の人がいなければなりません。MySQLの不規則な時系列データを通常のシーケンスに変換する
私の問題は、1つまたは複数の読み値から丸め時間値を計算する方法です。
たとえば、私は2.5時間に12回の読みを持っています。これらの読みには1時間ごとに明示的な値が必要です。
データ:
Date Device Value
2016-06-27 12:15:15, TA, 23.5
2016-06-27 12:30:19, TA, 23.1
2016-06-27 12:45:35, TA, 22.9
2016-06-27 13:00:55, TA, 22.5
2016-06-27 13:05:15, TA, 22.8
2016-06-27 13:35:35, TA, 23.2
私は統計数学にそのあまりないんだけど、その「標準偏差」と同類は私のためにロシアの市内です。
また、デバイスは時々スリープ状態になり、必ずしも温度を送信するとは限りません。
質問に情報を追加するように私に依頼してください。私は皆さんがこれに答える必要があるかどうか分かりません。
最も重要な部分は次のとおりです。 1.私はMySQLを使用していますが、それは変更されません。 2.私はPHPで解決策(またはヒント)を望んでいますが、他の多くの言語のヒントも私の理解に役立ちます。私は主にPHPプログラマですので、その言語の回答が最も高く評価されます。
編集:私はいくつかのポイントを指定したいと思います。 センサーから記録された時間データが不正確な場合があるため、私はSQLの挿入時間に頼っています。そのようにして、時間は1つのデバイスだけで制御され、コントローラはデータを挿入します。
たとえば、私が24時間に30個のタイムスタンプと値のペアを選択した場合、それらを24個のタイムスタンプ/値のペアに「結合」し、オーバーフローしたデータを結合する平均を使用したいと思います。 私はそれを説明するのは良いことではありませんが、これでより明確になることを願っています。
また、それを行うためのきれいなSQLの方法だけでなく、30行をループして24時間のデータ行を生成するPHPの方法も大好きです。
私の目標は、正確なタイムスタンプと温度値で、1時間に1つの行を持つことです。主に、ほとんどのグラフ作成ライブラリがそのような入力を期待しているからです。特にグラフに複数のシリーズがある場合。
ある時点で、過去6時間と15分間の精度でグラフを表示すると便利な場合があります。
私は未処理のデータを変更したくないということを知り、単なる結果を抽出/計算する方法を見つけるだけです。
広すぎると投票すると投票します。時間が正確でない場合は、データをどのように処理したいのですか? 「午後1時」のグループでは「13:00:55」の値がカウントされるか、またはクロックが56秒遅れて実際には「午後12時」になるのでしょうか?おそらくあなたのセンサーが読書を取ったときのことをあなたのセンサーが伝えたなら、あなたはdbに入る前に正常化することができます。 「ええと、午後12時03分だと言ったが、実際は12時04分だから、センサーが1分遅れる」 –
@Bobセンサからデータを取得する際に、timesampカラムの[automatic initialization](http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html)を使用することができます。この方法では、センサからの時間データを無視することができます。 – postrel
問題は、タイムスタンプ11:55:00の読み取り値と、タイムスタンプ12:05:00の読み取り値が得られた場合、その2つの平均値を12:00:00として計算したいと思います。私のグラフでそれを使用する。明らかに、希望のタイムスタンプ(12:00:00)の両側に値がない場合、これは機能しませんが、新しい値が得られるまで「将来」の値は無視できます。それで、「11:55:00,16.6」と「12:05:00,16.8」を「12:00:00,16.7」(可愛い数字を使用)に変換する方法は、後の「数式」です – Bob