2017-03-15 16 views
2

InfluxDBを毎日特定の時間に照会する最良の方法は何ですか?たとえば、チェックイン/チェックアウトのアクティビティを持つSeriesがあり、毎時2PM〜3PM先月の1日に、クエリ言語でこれを行う直接的な方法はないことを認識しています。現在のバージョン1.2 - 回避策があるかどうかわかりませんか?毎日特定の時間InfluxDBに問い合わせする

答えて

4

私は同じものを探していて、あなたの質問を見つけました。あなたが言うように、構文はそれを行うことを許可していないようです

最近、InfluxDBでは現在サポートされていない時間WHERE句に正規表現を使用しようとしました。

これはおそらく答えになるはずですが、私は答えを投稿しません。

しかし、別の問題に取り組んで、があなたの特定のケースであなたを助けるかもしれない、または助けないかもしれない方法を見つけました回避策はそれほど素晴らしいものではありませんが、に表示したいものの集約/選択を公式化できる場合はのように動作しているように見えます。時間。たとえば、特定の人物の、その時間内のチェックインチェックアウトの平均/最大/カウント数(あなたが探しているものかもしれないし、あなたが見たいと思っている日を特定するのに使うかもしれないそこで何が起こった)。

たとえば、毎日00:00から06:00までの電力消費量の測定値を取得したいとします。指定した日付の00:00から6時間ごとに測定値のグループ分けを行う最初のサブクエリを作成します。次にメインクエリでは、私は24時間でグループ化し、最初の値を選択します。 00-16:あなたは2-4午後、そう14たい場合は

SELECT first("mean") FROM (SELECT mean("value") FROM "Energy" WHERE "devicename" = 'Electricity' AND "deviceid" = '0_5' AND time > '2017-01-01' GROUP BY time(6h)) WHERE time > '2017-01-01' GROUP BY time(24h) 

はこのようにそれが14で始まるように00、あなたはサブクエリで2時間で最初のグループに必要な、そして14時間で設定されたoffseting :00。

SELECT first("mean") FROM (SELECT mean("value") FROM "Energy" WHERE "devicename" = 'Electricity' AND "deviceid" = '0_5' AND time > '2017-01-01T14:00:00Z' GROUP BY time(2h)) WHERE time > '2017-01-01T14:00:00Z' GROUP BY time(24h,14h) 

これをチェックするためです。

Energy 
time first 
2017-01-01T14:00:00Z 86.41747572815534 
2017-01-02T14:00:00Z 43.49722222222222 
2017-01-03T14:00:00Z 81.05416666666666 

サブクエリが返す:

Energy 
time mean 
2017-01-01T14:00:00Z 86.41747572815534 
2017-01-01T16:00:00Z 91.46879334257974 
2017-01-01T18:00:00Z 89.14027777777778 
2017-01-01T20:00:00Z 94.47434119278779 
2017-01-01T22:00:00Z 89.94305555555556 
2017-01-02T00:00:00Z 86.29542302357837 
2017-01-02T02:00:00Z 92.2625 
2017-01-02T04:00:00Z 89.93619972260748 
2017-01-02T06:00:00Z 87.78888888888889 
2017-01-02T08:00:00Z 50.790277777777774 
2017-01-02T10:00:00Z 0.6597222222222222 
2017-01-02T12:00:00Z 0.10957004160887657 
2017-01-02T14:00:00Z 43.49722222222222 
2017-01-02T16:00:00Z 86.0610263522885 
2017-01-02T18:00:00Z 86.59778085991678 
2017-01-02T20:00:00Z 91.56527777777778 
2017-01-02T22:00:00Z 90.52565880721221 
2017-01-03T00:00:00Z 86.79166666666667 
2017-01-03T02:00:00Z 87.15533980582525 
2017-01-03T04:00:00Z 89.47988904299584 
2017-01-03T06:00:00Z 91.58888888888889 
2017-01-03T08:00:00Z 41.67732962447844 
2017-01-03T10:00:00Z 16.216366158113733 
2017-01-03T12:00:00Z 25.27739251040222 
2017-01-03T14:00:00Z 81.05416666666666 

あなたが必要となる場合は13:00-15:私の1.2 InfluxDBでは、これが最終的な結果である00、あなたは、前の例でサブクエリをオフセットする必要があります1h。 14については

:00-15:00:

SELECT first("mean") FROM (SELECT mean("value") FROM "Energy" WHERE "devicename" = 'Electricity' AND "deviceid" = '0_5' AND time > '2017-01-01T14:00:00Z' GROUP BY time(1h)) WHERE time > '2017-01-01T14:00:00Z' GROUP BY time(24h,14h) 

希望はこのことができます:)

+0

が、私はとにかく骨材を使用することはできません、私は異なる場合がありますが、1を与えています他の人を助けるかもしれないので); –

関連する問題