測定データとステータスデータを持つ大規模なデータベースでは、大量の情報を失うことなくデータを削減するつもりです。私はいくつかの例を研究しましたが、私のSQLスキルは成功するには限界があるようです...MySQL:重複と定数の削除/集計によるデータのクリーンアップ
テーブルには数百万のデータがあります。テーブルの定義は
TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32)
です。 )(最大を使用して読んで同じタイムスタンプ、デバイスとの
- 集計値、:
+---------------------+----------+------+---------+---------+-------+------+ | TIMESTAMP | DEVICE | TYPE | EVENT | READING | VALUE | UNIT | +---------------------+----------+------+---------+---------+-------+------+ | 2016-03-27 10:17:45 | KNX_428c | KNX | 49 mA | state | 49 | mA | | 2016-03-27 10:19:45 | KNX_428c | KNX | 47 mA | state | 47 | mA | | 2016-03-27 10:21:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:23:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:23:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:25:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:25:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:27:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:27:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:29:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:31:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:31:44 | KNX_428c | KNX | 47 mA | state | 47 | mA | | 2016-03-27 10:33:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:33:44 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:34:04 | KNX_428c | KNX | 136 mA | state | 136 | mA | | 2016-03-27 10:34:04 | KNX_428c | KNX | 165 mA | state | 165 | mA | | 2016-03-27 10:34:05 | KNX_428c | KNX | 136 mA | state | 136 | mA | | 2016-03-27 10:34:05 | KNX_428c | KNX | 107 mA | state | 107 | mA | | 2016-03-27 10:34:05 | KNX_428c | KNX | 79 mA | state | 79 | mA | | 2016-03-27 10:34:06 | KNX_428c | KNX | 50 mA | state | 50 | mA | | 2016-03-27 10:34:29 | KNX_428c | KNX | 107 mA | state | 107 | mA | | 2016-03-27 10:34:29 | KNX_428c | KNX | 136 mA | state | 136 | mA | | 2016-03-27 10:34:30 | KNX_428c | KNX | 165 mA | state | 165 | mA | | 2016-03-27 10:34:30 | KNX_428c | KNX | 139 mA | state | 139 | mA | | 2016-03-27 10:34:30 | KNX_428c | KNX | 107 mA | state | 107 | mA | | 2016-03-27 10:34:31 | KNX_428c | KNX | 51 mA | state | 51 | mA | | 2016-03-27 10:34:44 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:35:44 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:37:44 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:37:44 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:39:43 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:41:43 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:43:43 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:45:43 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:47:43 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:47:43 | KNX_428c | KNX | 0 mA | state | 0 | mA | | 2016-03-27 10:49:43 | KNX_428c | KNX | 0 mA | state | 0 | mA |
が、私は二つのことをするつもり:フルテーブルには、それぞれが個別に処理しなければならない多くの異なるデバイスと測定値を持っています
- 定数値の最初と最後を除いて、連続する同一の値を削除します。
グループで選択した文で最初に達成したことは、しかし、私は実際にデータベースをどのように変更するのか分かりません。第二段階のために
SELECT *,MAX(VALUE) FROM filelog
GROUP BY TIMESTAMP,DEVICE,READING
私はいくつかの例を見つけましたが、私はそれをするつもりのように、彼らは常に1つのレコードではなく2つ(最初と最後)で重複を兼ね備えています。そして、通常、これらの例はJOINを使って動作しますが、これは数百万のデータセットでは不可能だと思います。
結果は以下のようにしなければならない:あなたのサポートのための
| 2016-03-27 10:17:45 | KNX_428c | KNX | 49 mA | state | 49 | mA |
| 2016-03-27 10:19:45 | KNX_428c | KNX | 47 mA | state | 47 | mA |
| 2016-03-27 10:21:44 | KNX_428c | KNX | 50 mA | state | 50 | mA |
| 2016-03-27 10:33:44 | KNX_428c | KNX | 50 mA | state | 50 | mA |
| 2016-03-27 10:34:04 | KNX_428c | KNX | 136 mA | state | 165 | mA |
| 2016-03-27 10:34:05 | KNX_428c | KNX | 136 mA | state | 136 | mA |
| 2016-03-27 10:34:06 | KNX_428c | KNX | 50 mA | state | 50 | mA |
| 2016-03-27 10:34:29 | KNX_428c | KNX | 107 mA | state | 136 | mA |
| 2016-03-27 10:34:30 | KNX_428c | KNX | 165 mA | state | 165 | mA |
| 2016-03-27 10:34:31 | KNX_428c | KNX | 51 mA | state | 51 | mA |
| 2016-03-27 10:34:44 | KNX_428c | KNX | 0 mA | state | 0 | mA |
| 2016-03-27 10:49:43 | KNX_428c | KNX | 0 mA | state | 0 | mA |
感謝。
2番目の要件は私には分かりません。サンプルデータを使って何を意味するのかを示すことができますか? –
レコードの数は、結合操作には関係ありません。しかし、私はあなたがとにかくそれを必要とするとは思わない。保存したいレコードを別のテーブルにコピーして元のデータを削除する方が簡単かもしれません。 – Shadow
2番目のステップは今や期待された結果ではっきりしていますか? – Xcoder