web-dev-qa-db-ja.com

InfluxDB測定から不要なフィールド値を持つポイントを削除する

InfluxDBでは、フィールド値ではなくWHERE tag='value'条件に基づいてポイントを削除 できます

たとえば、値が-1の測定値を一連の正の浮動小数点数(CPU使用率など)に誤って保存した場合、DELETE FROM metrics WHERE cpu=-1は次のエラーを返します。

削除中のWHERE句でサポートされていないフィールド

15
Dan Dascalescu

これはInfluxDBでは不可能です- ticket 32​​1 を参照してください。

同じ timestampおよびtag set のポイントを測定に挿入することにより、ポイントを他のいくつかの値で上書きできます。

ポイントは、測定名、タグセット、およびタイムスタンプによって一意に識別されます。既存のポイントと同じ測定値、タグセット、およびタイムスタンプを使用して新しいポイントを送信すると、フィールドセットは古いフィールドセットと新しいフィールドセットの和集合になり、すべてのタイが新しいフィールドセットに移動します。これは意図された動作です。

nullを挿入することは想定されていません なので、おそらく前のポイントからの値を繰り返したくなるでしょう。

同じタイムスタンプのポイントを挿入し、タグの1つに一意の値を設定して、そのタグに対して削除を実行することを検討する場合があります。

DELETE FROM measurement WHERE some_existing_tag='deleteme'

これはうまくいきません。同じタイムスタンプの2つのポイントが作成され、そのうちの1つにdeletemeタグが付けられます。

5
Dan Dascalescu

高価なアプローチ

# 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に置き換えます

1
Hardik Sondagar