web-dev-qa-db-fra.com

Pouvez-vous supprimer des données de influxdb?

Comment supprimez-vous les données de influxdb? 

La documentation montre que cela devrait être aussi simple que:

delete from foo where time < now() -1h

Pour une raison quelconque, influxdb rejette mes instructions de suppression en indiquant "Les requêtes de suppression ne peuvent pas avoir de clause where qui ne fait pas référence au temps"

select * from bootstrap where duration > 1000 and time > 14041409940s and time < now()

Je veux supprimer ces 5 entrées dont la durée> 1000 secondes

enter image description here

Cela devrait être une instruction SQL valide, mais elle échoue

enter image description here

Aucune de ces instructions delete ne fonctionne non plus

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"

Référence de la documentation

http://influxdb.com/docs/v0.8/api/query_language.html

Mettre à jour

Requêtes supplémentaires

delete from bootstrap where time > 1404141416824 and duration > 3000;
delete sequence_number from bootstrap where time > 1s and duration > 1000;

Peut-être que c'est un bug? 

https://github.com/influxdb/influxdb/issues/975
https://github.com/influxdb/influxdb/issues/84

37
spuder

Il semble que vous puissiez le faire dans influxdb 0.9. Par exemple, voici une requête qui vient de réussir pour moi: 

DROP SERIES FROM temperature WHERE machine='zagbar'

(Par généreux commentaire de @MuratCorlu, je republie mon commentaire précédent comme réponse ...)

31
John Clements

Avec influx, vous ne pouvez supprimer que par heure

Par exemple, les éléments suivants ne sont pas valides:

#Wrong
DELETE FROM foo WHERE time < '2014-06-30' and duration > 1000 #Can't delete if where clause has non time entity

Voici comment j'ai pu effacer les données

DELETE FROM foo WHERE time > '2014-06-30' and time < '2014-06-30 15:16:01'

Mise à jour: cela a fonctionné avec l'afflux 8. Soi-disant, cela ne fonctionne pas avec l'afflux 9

18
spuder

Je suis surpris que personne n'ait mentionné les stratégies de rétention InfluxDB pour la suppression automatique des données. Vous pouvez définir une stratégie de rétention par défaut et les définir également au niveau de la base de données.

De les docs :

CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [DEFAULT]
12
Dan Esparza

Comme InfluxDB est un peu pénible à propos des suppressions, nous utilisons un schéma qui a un champ booléen appelé "ForUse", qui ressemble à ceci lors de la publication via le protocole de ligne (v0.9):

your_measurement,your_tag=foo ForUse=TRUE,value=123.5 1262304000000000000

Vous pouvez écraser la même mesure, la même clé de balise et la même heure avec les clés de champ que vous envoyez. Nous «supprimons» donc en définissant «ForUse» sur false et en laissant la stratégie de rétention garder la taille de la base de données sous contrôle.

Comme le remplacement s'effectue de manière transparente, vous pouvez également ajouter le schéma de manière rétroactive. Noice.

7
Jason

J'ajoute cette commande comme référence pour modifier la rétention à l'intérieur du conteneur InfluxDB dans kubernetes k8s. wget est utilisé de sorte que le conteneur n'a pas de CLI curl et influx 

wget 'localhost:8086/query?pretty=true' --post-data="db=k8s;q=ALTER RETENTION POLICY \"default\" on \"k8s\" duration 5h shard duration 4h default" -O-

Vérification

wget 'localhost:8086/query?pretty=true' --post-data="db=k8s;q=SHOW RETENTION POLICIES" -O-
0
Zaur

Vous pouvez uniquement supprimer avec votre champ de temps, qui est un nombre.

Delete from <measurement> where time=123456

marchera. Rappelez-vous de ne pas donner de guillemets simples ou doubles. C'est un numéro.

0
Mahaveer Jangir