sql - nightly - influxdb windows
¿Puedes borrar datos de influxdb? (6)
Con influx, solo puedes eliminar por tiempo
Por ejemplo, los siguientes son inválidos:
#Wrong
DELETE FROM foo WHERE time < ''2014-06-30'' and duration > 1000 #Can''t delete if where clause has non time entity
Así es como pude eliminar los datos
DELETE FROM foo WHERE time > ''2014-06-30'' and time < ''2014-06-30 15:16:01''
Actualización: esto funcionó en la afluencia 8. Supuestamente no funciona en la afluencia 9
¿Cómo se eliminan los datos de influxdb?
La documentación muestra que debe ser tan simple como:
delete from foo where time < now() -1h
Por algún motivo, influxdb rechaza mis declaraciones de eliminación que dicen "Eliminar consultas no puede tener una cláusula where que no haga referencia al tiempo"
select * from bootstrap where duration > 1000 and time > 14041409940s and time < now()
Quiero eliminar estas 5 entradas cuya duración> 1000 segundos
Esta debería ser una sentencia sql válida, pero falla
Ninguna de estas instrucciones de eliminación funciona tampoco
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"
Referencia de documentación
http://influxdb.com/docs/v0.8/api/query_language.html
Actualizar
Consultas adicionales
delete from bootstrap where time > 1404141416824 and duration > 3000;
delete sequence_number from bootstrap where time > 1s and duration > 1000;
Tal vez esto es un error?
https://github.com/influxdb/influxdb/issues/975
https://github.com/influxdb/influxdb/issues/84
Debido a que InfluxDB es un poco doloroso sobre las eliminaciones, usamos un esquema que tiene un campo booleano llamado "ForUse", que se ve así cuando se publica a través del protocolo de línea (v0.9):
your_measurement,your_tag=foo ForUse=TRUE,value=123.5 1262304000000000000
Puede sobrescribir la misma medición, clave de etiqueta y hora con cualquier clave de campo que envíe, por lo que hacemos "eliminaciones" configurando "ForUse" como falso, y permitiendo que la política de retención mantenga el tamaño de la base de datos bajo control.
Como la sobrescritura se realiza sin problemas, también puede agregar el esquema de forma retroactiva. Noice.
Estoy agregando estos comandos como referencia para alterar la retención dentro del contenedor InfluxDB en kubernetes k8s. wget se usa para que el contenedor no tenga curvatura y afluencia CLI
wget ''localhost:8086/query?pretty=true'' --post-data="db=k8s;q=ALTER RETENTION POLICY /"default/" on /"k8s/" duration 5h shard duration 4h default" -O-
Verificación
wget ''localhost:8086/query?pretty=true'' --post-data="db=k8s;q=SHOW RETENTION POLICIES" -O-
Me sorprende que nadie haya mencionado las políticas de retención de InfluxDB para la eliminación automática de datos. Puede establecer una política de retención predeterminada y también establecerlos en un nivel por base de datos.
De los documentos :
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [DEFAULT]
Parece que puedes hacer esto en influxdb 0.9. Por ejemplo, aquí hay una consulta que me acaba de salir bien:
DROP SERIES FROM temperature WHERE machine=''zagbar''
(Por generoso comentario de @MuratCorlu, estoy volviendo a publicar mi comentario anterior como respuesta ...)
Solo puede eliminar con su campo de tiempo, que es un número.
Delete from <measurement> where time=123456
trabajará. Recuerde no dar comillas simples o comillas dobles. Es un número.