La guía o código que verás en este artículo es la solución más sencilla y efectiva que hallamos a tus dudas o dilema.
Solución:
Esto todavía (2015 – 2020) no es posible en InfluxDB; consulte el ticket 3210.
Puede sobrescribir el punto con otros valores insertando en la medición un punto con la misma marca de tiempo y conjunto de etiquetas:
Un punto se identifica de forma única por el nombre de la medición, el conjunto de etiquetas y la marca de tiempo. Si envía un punto nuevo con la misma medida, conjunto de etiquetas y marca de tiempo que un punto existente, el conjunto de campos se convierte en la unión del conjunto de campos anterior y el conjunto de campos nuevo, donde los vínculos van al conjunto de campos nuevo. Este es el comportamiento previsto.
Como se supone que no debe insertar valores nulos, probablemente querrá repetir los valores de los puntos anteriores.
Puede pensar en insertar un punto con la misma marca de tiempo y establecer un valor único para una de las etiquetas, luego ejecutar una eliminación en esa etiqueta:
DELETE FROM measurement WHERE some_existing_tag='deleteme'
Aunque esto no funcionará. Cuando insertas ese segundo deleteme
punto, tiene un conjunto de etiquetas diferente debido a la deleteme
etiqueta, por lo que InfluxDB creará un nuevo punto para él. Entonces la DELETE
el comando eliminará esopero no el punto original que desea eliminar.
enfoques caros
Sin intervalo de tiempo
# 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
con rango de tiempo
# Copy all valid data to a temporary measurement within timerange
SELECT * INTO metrics_clean FROM metrics WHERE cpu!=-1 and time > '' and time '';
# Delete existing dirty data within timerange
DELETE FROM metrics WHERE time > '' and time '';
# Copy temporary measurement to existing measurement
SELECT * INTO metrics FROM metrics_clean
Solución fea y lenta pero bastante robusta: almacenar marcas de tiempo, luego eliminar entradas por marca de tiempo, filtrar opcionalmente DELETE
declaración con etiquetas adicionales.
nótese bien ¡esto solo funciona si los campos tienen marcas de tiempo únicas! Por ejemplo, si hay varios campos para una marca de tiempo, todos estos campos se eliminan con el siguiente comando. Utilizando epoch=ns
prácticamente mitiga esto, a menos que tenga ~ mil millones de puntos de datos / segundo
curl -G 'http://localhost:8086/query?db=DATABASE&epoch=ns'
--data-urlencode "q=SELECT * FROM metrics WHERE cpu=-1" |
jq -r "(.results[0].series[0].values[][0])" > delete_timestamps.txt
for i in $(cat delete_timestamps.txt); do
echo $i;
curl -G 'http://localhost:8086/query?db=DATABASE&epoch=ns'
--data-urlencode "q=DELETE FROM metrics WHERE time=$i AND cpu=-1";
done