0

以下は、この質問に対するシナリオです。

要件: influxDb 内の時系列データを、デバイス内の各センサーについて、秒、分、時間、日、および週の粒度で事前に集計します。

現在の提案: デバイスのオンボード時に、生の時系列データとは異なる保持ポリシーで、デバイスのセンサーごとに 5 つの継続的なクエリ (粒度レベルごとに 1 つ、つまり、秒、分など) を作成します。

現在の提案による制限: デバイス/センサー (時系列データ ソース) の数が増えると、流入はあまりにも多くの継続的なクエリで肥大化し (これは推奨されません)、influxDb インスタンス自体に負担がかかります。

質問: 上記の問題を回避するために、同じソース測定 (つまり、生の時系列測定) で連続クエリを作成する可能性はありますか?ただし、連続クエリの結果と測定における生の時系列データ。

例:

CREATE CONTINUOUS QUERY "strain_seconds" ON "database"
RESAMPLE EVERY 5s FOR 1m
BEGIN
  SELECT MEAN("strain_top") AS "STRAIN_TOP_MEAN" INTO "database"."raw"."strain" FROM "database"."raw"."strain" GROUP BY time(1s),*
END
4

1 に答える 1

0

私の知る限り、ドキュメントから見た限りでは、継続的なクエリで新しいタグを適用することはできません。

私が要件を正しく理解していれば、これはあなたがアプローチできる 1 つの方法です。

CREATE CONTINUOUS QUERY "strain_seconds" ON "database"
RESAMPLE EVERY 5s FOR 1m
BEGIN
  SELECT MEAN("strain_top") AS "STRAIN_TOP_MEAN" INTO "database"."raw"."strain" FROM "database"."strain_seconds_retention_policy"."strain" GROUP BY time(1s),*
END

これにより、同じ測定でデータが保存されますが、保持ポリシーが異なります - strain_seconds_retention_policy。実行するときは、select選択する対応する保存ポリシーを指定します。複数の保存ポリシーを同時に
実行することはできないことに注意してください。selectいずれかを指定しない場合は、デフォルトのものが使用されます (すべてではありません)。それが必要な場合は、別のアプローチを使用できます。

デバイスごと、センサーごとに継続的なクエリを定義する必要がある理由がよくわかりません。5 つ (1 秒、分、時間、日、週ごとに 1 つ) を定義し、group by *既に行っている (すべて) を実行するだけです。ソース データポイントに対応するデバイスとセンサーの ID を持つタグがある限り、リサンプリングされたデータポイントにもそれが含まれます。新しく追加されたデバイス (データ) は、これら 5 つのクエリによって自動的に処理され、対応する保持ポリシーに保存されます。

追加のタグを適用したい場合は、継続的なクエリを使用する代わりに、カスタム スクリプトでデータベースの外部でデータを処理し、必要な追加のタグを付けて書き戻すことができます。

于 2020-01-29T14:06:19.963 に答える