Influxdbからデータを削除するにはどうすればよいですか?
ドキュメントには、次のように単純である必要があることが示されています。
delete from foo where time < now() -1h
何らかの理由で、influxdbは "時間を参照しないwhere句を削除クエリに含めることはできません"という私の削除ステートメントを拒否します
select * from bootstrap where duration > 1000 and time > 14041409940s and time < now()
期間が1000秒を超える5つのエントリを削除したい
これは有効なSQL文である必要がありますが、失敗します
これらの削除ステートメントはいずれも機能しません
delete from bootstrap where duration > 3000000"
delete from bootstrap where duration > 300000"
delete from bootstrap where time = 1404140994043"
delete from bootstrap where duration > 300000 and time > 1404141054508 "
delete from bootstrap where duration > 300000 and time > 1404141054508s "
delete from bootstrap where time > 1404141054508s and duration > 300000 "
delete from bootstrap where duration > 30000 and time > 1s"
ドキュメント参照
http://influxdb.com/docs/v0.8/api/query_language.html
更新
追加のクエリ
delete from bootstrap where time > 1404141416824 and duration > 3000;
delete sequence_number from bootstrap where time > 1s and duration > 1000;
たぶんこれはバグですか?
https://github.com/influxdb/influxdb/issues/975
https://github.com/influxdb/influxdb/issues/84
Influxdb 0.9でこれを実行できるようです。たとえば、私にとって成功したクエリは次のとおりです。
DROP SERIES FROM temperature WHERE machine='zagbar'
(@MuratCorluによる寛大なコメントごとに、以前のコメントを回答として再投稿しています...)
流入では、時間によってのみ削除できます
たとえば、次は無効です。
#Wrong
DELETE FROM foo WHERE time < '2014-06-30' and duration > 1000 #Can't delete if where clause has non time entity
これは私がデータを削除できた方法です
DELETE FROM foo WHERE time > '2014-06-30' and time < '2014-06-30 15:16:01'
更新:これは、流入8で機能しました。おそらく、流入9では動作しません。
自動データ削除について InfluxDB保存ポリシー に言及している人がいないことに驚いています。デフォルトの保持ポリシーを設定し、データベースごとのレベルで設定することもできます。
ドキュメント から:
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [DEFAULT]
InfluxDBは削除に少し苦痛があるため、ラインプロトコル(v0.9)を介して投稿する場合は、「ForUse」というブールフィールドを持つスキーマを使用します。
your_measurement,your_tag=foo ForUse=TRUE,value=123.5 1262304000000000000
同じ測定、タグキー、および時間を送信するフィールドキーで上書きできます。そのため、「ForUse」をfalseに設定し、保持ポリシーでデータベースサイズを制御できるようにして「削除」を行います。
上書きはシームレスに行われるため、スキーマもさかのぼって追加できます。いいね.
受け入れられた回答(DROP SERIES)は多くの場合に機能しますが、削除する必要があるレコードが多くの時間範囲とタグセットに分散している場合は機能しません。
(より遅い方法ですが)より一般的な目的のアプローチは、別のプログラミング言語を使用して、削除クエリを1つずつ発行することです。
削除するレコードごとに:
これをクエリにフォーマットします。
DELETE FROM "things" WHERE time=123123123 AND tag1='val' AND tag2='val'
各クエリを1つずつ送信します
時間フィールド(数値)でのみ削除できます。
Delete from <measurement> where time=123456
動作します。単一引用符または二重引用符を与えないでください。その数。