InfluxDBでは、フィールド値ではなくWHERE tag='value'
条件に基づいてポイントを削除 できます 。
たとえば、値が-1の測定値を一連の正の浮動小数点数(CPU使用率など)に誤って保存した場合、DELETE FROM metrics WHERE cpu=-1
は次のエラーを返します。
削除中のWHERE句でサポートされていないフィールド
これはInfluxDBでは不可能です- ticket 321 を参照してください。
同じ timestampおよびtag set のポイントを測定に挿入することにより、ポイントを他のいくつかの値で上書きできます。
ポイントは、測定名、タグセット、およびタイムスタンプによって一意に識別されます。既存のポイントと同じ測定値、タグセット、およびタイムスタンプを使用して新しいポイントを送信すると、フィールドセットは古いフィールドセットと新しいフィールドセットの和集合になり、すべてのタイが新しいフィールドセットに移動します。これは意図された動作です。
nullを挿入することは想定されていません なので、おそらく前のポイントからの値を繰り返したくなるでしょう。
同じタイムスタンプのポイントを挿入し、タグの1つに一意の値を設定して、そのタグに対して削除を実行することを検討する場合があります。
DELETE FROM measurement WHERE some_existing_tag='deleteme'
これはうまくいきません。同じタイムスタンプの2つのポイントが作成され、そのうちの1つにdeleteme
タグが付けられます。
高価なアプローチ
# 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
ヒント-ダーティデータがある時間範囲がわかっている場合は、それを追加し、DROP
クエリをDELETE
に置き換えます