プロジェクトで influxdb を使用していますが、一度に複数のポイントが書き込まれると、クエリの問題に直面しています。
influxdb-python を使用して、1000 個の一意のポイントを influxdb に書き込みます。
influxdb-python にはinfluxclient.write_points()という関数があります
現在、次の 2 つのオプションがあります。
- 各ポイントを毎回 1 回 (1000 回) 書き込むか、
- 1000点をまとめて、すべての点を一度に書きます。
最初のオプション コードは次のようになり (疑似コードのみ)、動作します。
thousand_points = [0...9999
while i < 1000:
...
...
point = [{thousand_points[i]}] # A point must be converted to dictionary object first
influxclient.write_points(point, time_precision="ms")
i += 1
すべてのポイントを書いた後、次のようなクエリを書くと:
SELECT * FROM "mydb"
1000ポイント全部取れます。
すべての反復ですべての書き込みによって追加されるオーバーヘッドを回避するために、一度に複数のポイントを書き込むことを検討したいと思いました。これはwrite_points
機能によってサポートされています。
write_points(ポイント、time_precision=なし、データベース=なし、retention_policy=なし、tags=なし、batch_size=なし)
複数の時系列名に書き込みます。
パラメータ: points (辞書のリスト、各辞書はポイントを表します) – データベースに書き込まれるポイントのリスト
だから、私がしたことは:
thousand_points = [0...999]
points = []
while i < 1000:
...
...
points.append({thousand_points[i]}) # A point must be converted to dictionary object first
i += 1
influxclient.write_points(points, time_precision="ms")
この変更により、クエリを実行すると:
SELECT * FROM "mydb"
結果、1点しか取れません。理由がわかりません。
どんな助けでも大歓迎です。