如何从Influxdb中删除数据?
文档显示它应该像下面这样简单:
delete from foo where time < now() -1h
Run Code Online (Sandbox Code Playgroud)
出于某种原因,Influxdb拒绝我的删除语句说"删除查询不能有where子句不引用时间"
select * from bootstrap where duration > 1000 and time > 14041409940s and time < now()
Run Code Online (Sandbox Code Playgroud)
我想删除持续时间> 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"
Run Code Online (Sandbox Code Playgroud)
文档参考
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;
Run Code Online (Sandbox Code Playgroud)
也许这是一个错误?
https://github.com/influxdb/influxdb/issues/975
https://github.com/influxdb/influxdb/issues/84
Joh*_*nts 39
看来你可以在Influxdb 0.9中做到这一点.例如,这是一个对我来说成功的查询:
DROP SERIES FROM temperature WHERE machine='zagbar'
Run Code Online (Sandbox Code Playgroud)
(根据@MuratCorlu的慷慨评论,我将我之前的评论作为回答......)
spu*_*der 20
有了涌入,你只能按时间删除
例如,以下内容无效:
#Wrong
DELETE FROM foo WHERE time < '2014-06-30' and duration > 1000 #Can't delete if where clause has non time entity
Run Code Online (Sandbox Code Playgroud)
这就是我能够删除数据的方式
DELETE FROM foo WHERE time > '2014-06-30' and time < '2014-06-30 15:16:01'
Run Code Online (Sandbox Code Playgroud)
更新:这适用于涌入8.据说它不适用于涌入9
Dan*_*rza 13
我很惊讶没有人提到关于自动数据删除的InfluxDB保留策略.您可以设置默认保留策略,也可以在每个数据库级别设置它们.
来自文档:
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [DEFAULT]
Run Code Online (Sandbox Code Playgroud)
因为InfluxDB对删除有点痛苦,我们使用一个名为"ForUse"的布尔字段的模式,当通过行协议(v0.9)发布时,它看起来像这样:
your_measurement,your_tag=foo ForUse=TRUE,value=123.5 1262304000000000000
Run Code Online (Sandbox Code Playgroud)
您可以使用您发送的任何字段键覆盖相同的度量,标记键和时间,因此我们通过将"ForUse"设置为false来"删除",并让保留策略使数据库大小受到控制.
由于覆盖无缝地发生,您也可以追溯添加模式.在降噪.
在 InfluxDB 2 中,不存在类似的 InfluxQL 命令DROP
(仅支持 InfluxQL 只读查询)。相反,您需要使用CLI或REST API。
例子:
influx delete --bucket "MY BUCKET" --predicate '_measurement="MY_MEASUREMENT"' -o "MY ORG" --start '1970-01-01T00:00:00Z' --stop '2025-12-31T23:59:00Z'
Run Code Online (Sandbox Code Playgroud)