2017-06-16 8 views
0

一部のデバイスからダイナミック間隔で水の消費に関するシリーズデータを収集しました。 各シリーズのデータ​​は、異なる時間間隔で記録することができます。私は、クエリとなど5メートル、10メートルとして、一定の間隔でシリーズを揃えたいInfluxdbでシリーズデータをダイナミック間隔で保存および整列する方法

例生データ :あなたが特定の間隔での消費の割合をとることができる

{ device: 1, from: 2017/01/01 00:00, to: 2017/01/01 00:13, consumption: 13 }, 
{ device: 1, from: 2017/01/01 00:13, to: 2017/01/01 00:20, consumption: 12 }, 
{ device: 1, from: 2017/01/01 00:20, to: 2017/01/01 00:28, consumption: 20 }, 
           . 
           . 
           . 
{ device: 2, from: 2017/01/01 00:00, to: 2017/01/01 00:06, consumption: 13 }, <-- 
{ device: 2, from: 2017/01/01 00:09, to: 2017/01/01 00:15, consumption: 12 }, <--Time gap between previous data may exist and can treat as zero consumption in this gap 
{ device: 2, from: 2017/01/01 00:15, to: 2017/01/01 00:25, consumption: 20 }, 
           . 
           . 
           . 

が消費すなわち、同じです1分あたり{ device: 1, from: 2017/01/01 00:00, to: 2017/01/01 00:13, consumption: 13 }は、この間隔の1分ごとに1です。

期待される結果であれば一定の間隔= 5メートル:

Device 1 
time    consumption 
----    ----------- 
2017-01-01T00:00Z  5 
2017-01-01T05:00Z  5 
2017-01-01T10:00Z  6.428571 
2017-01-01T15:00Z  8.571429 
2017-01-01T20:00Z  12.5 
       . 
       . 
       . 
Device 2 
time    consumption 
----    ----------- 
2017-01-01T00:00Z  10.833333 
2017-01-01T05:00Z  4.166667 
2017-01-01T10:00Z  10 
2017-01-01T15:00Z  10 
2017-01-01T20:00Z  10 
       . 
       . 
       . 

誰もがこの問題を解決するために私を助けることができますか?

答えて

0

グループを希望の間隔でグループ化し、結果を集計し、欠落している場合は適切な値を入力します。

たとえば、最後の1時間分の平均消費量が5分間隔で、ギャップはlinear interpolation of missing valuesで埋められます。

SELECT mean("consumption") AS "consumption" 
FROM "Device 1", "Device 2" 
WHERE time > now() - 1h 
GROUP BY time(5m) 
FILL(linear) 

測定名が「デバイス1」および「デバイス2」であると仮定して、必要に応じて置き換えます。

関連する問題