1

私は InfluxDB を試しており、次の動作を得ていtsますselect * from test where time > ts

何らかの理由で、これにより、タイムスタンプがより低い行を含むすべての行が返されます。時間制約の構文を誤解していますか?

補足として、分間隔で行を作成し、条件where time > now() -1mを使用すると、直前に作成された行のみが取得されます。

4

1 に答える 1

3

InfluxDB サイトのクエリ言語のドキュメントから:

時間が非常に大きいことに注意してください。それはマイクロ秒スケールのエポックだからです。InfluxDB は常にこのスケールでポイントを格納しますが、ほとんどのライブラリは秒またはミリ秒のスケール値として時間を返します。特定のポイントを選択している場合は、そのポイントが持つ正確なマイクロ秒スケールのエポックを知る必要があります。そうしないと、予期しない空の結果が得られます。

Influx に付属するデフォルトの Web インターフェイスを使用すると1422883121396、上記のチュートリアルのようにタイムスタンプを確認できます1400497861762723。2 番目のタイムスタンプには、実際にはマイクロ秒単位の桁数があります (完全ではありません。6 桁あるはずなのに 3 桁が表示されます)。したがって、time > 1422883121396非常に古い日付/時刻を照会しているように照会すると、すべての結果が返されます。

ソリューション:

  1. 完全なタイムスタンプを返すライブラリを使用しますが、使用したことがないためわかりません

  2. マイクロ秒の精度をあまり気にしない場合は、回避策として、タイムスタンプの最後に 000000 を追加して、正しいスケールに変換できます

この精度を必要とするアプリケーション (シミュレーション ソフトウェアなど) もありますが、ほとんどの場合、#2 の回避策が機能します。

上記があなたの問題を解決することを願っています

于 2015-02-18T11:30:59.407 に答える