InfluxDB vous permet supprimer des points basé sur WHERE tag='value'
conditions, mais pas par valeur de champ.
Par exemple, si vous avez accidentellement stocké une mesure avec une valeur de -1 dans une série de flottants positifs (par exemple, utilisation du processeur), DELETE FROM metrics WHERE cpu=-1
renverra cette erreur:
champs non pris en charge dans la clause WHERE lors de la suppression
Ce n'est pas possible dans InfluxDB - voir ticket 321 .
Vous pouvez remplacer le point par d'autres valeurs en insérant dans la mesure un point avec le même horodatage et jeu de balises :
Un point est identifié de manière unique par le nom de la mesure, le jeu de balises et l'horodatage. Si vous soumettez un nouveau point avec la même mesure, le même jeu de balises et le même horodatage qu'un point existant, le jeu de champs devient l'union de l'ancien jeu de champs et du nouveau jeu de champs, où tous les liens vont au nouveau jeu de champs. C'est le comportement souhaité.
Puisque vous êtes pas censé insérer des valeurs nulles , vous voudrez probablement répéter les valeurs des points précédents.
Vous pourriez penser à insérer un point avec le même horodatage, à définir une valeur unique pour l'une des balises, puis à exécuter une suppression sur cette balise:
DELETE FROM measurement WHERE some_existing_tag='deleteme'
Cela ne fonctionnera pas cependant. Vous vous retrouverez avec deux points avec le même horodatage, et l'un d'eux ayant la balise deleteme
.
Approche coûteuse
# Copy all valid data to a temporary measurement
SELECT * INTO metrics_clean FROM metrics WHERE cpu!=-1
# Drop existing dirty measurement
DROP measurement metrics
# Copy temporary measurement to existing measurement
SELECT * INTO metrics FROM metrics_clean
Astuce - Si vous savez dans quelle plage de temps vous avez des données sales, ajoutez-les et remplacez la requête DROP
par DELETE