InfluxDB のダウンサンプリングの両端

  • N分間隔のダウンサンプリングすると、過去方向のタイムスタンプで丸め込まれる。
    • したがって、5分間隔の取得なら5mで集計しておけば5分間隔の過去側の時刻に正規化できる。
  • time > N や time < N には N が含まれる
    • 不等号は≧≦として扱う。
    • きっかり両端の時刻のデータがあると含まれてしまうので、ダウンサンプリング済みのデータを扱う場合に考慮する。

テストデータ

  • 00:00:00 と 00:30:00 に 0
  • 00:00:10 から5分おきに1から徐々に増える
  • うっかりJSTでやっちゃったので、クエリでは9時間引いているので注意
時刻 time v
2015-01-01 00:00:00 JST 1420038010000 0
2015-01-01 00:00:10 JST 1420038010000 1
2015-01-01 00:05:10 JST 1420038310000 2
2015-01-01 00:10:10 JST 1420038610000 3
2015-01-01 00:15:10 JST 1420038910000 4
2015-01-01 00:20:10 JST 1420039210000 5
2015-01-01 00:25:10 JST 1420039510000 6
2015-01-01 00:30:00 JST 1420039800000 0
2015-01-01 00:30:10 JST 1420039810000 7
2015-01-01 00:35:10 JST 1420040110000 8
2015-01-01 00:40:10 JST 1420040110000 9

検証

SELECT time,mean(v),min(v),max(v) FROM a where time > '2014-12-31 15:00:00.000' and time < '2014-12-31 15:30:00.00' group by time(5m);

時刻 time mean min max
00:00:00 1420038000000 0.5 0 1
00:05:00 1420038300000 2 2 2
00:10:00 1420038600000 3 3 3
00:15:00 1420038900000 4 4 4
00:20:00 1420039200000 5 5 5
00:25:00 1420039500000 6 6 6
00:30:00 1420039800000 0 0 0

00:30:00として、00:30:00のポイントを含む集計値が含まれている。

SELECT time,mean(v),min(v),max(v) FROM a where time > '2014-12-31 15:00:00.000' and time < '2014-12-31 15:35:00.00' group by time(5m);

時刻 time mean min max
00:00:00 1420038000000 0.5 0 1
00:05:00 1420038300000 2 2 2
00:10:00 1420038600000 3 3 3
00:15:00 1420038900000 4 4 4
00:20:00 1420039200000 5 5 5
00:25:00 1420039500000 6 6 6
00:30:00 1420039800000 3.5 0 7

SELECT time,mean(v),min(v),max(v) FROM a where time > '2014-12-31 15:00:00.000' and time < '2014-12-31 15:30:00.00' group by time(15m);

時刻 time mean min max
00:00:00 1420038000000 1.5 0 3
00:15:00 1420038900000 5 4 6
00:30:00 1420039800000 0 0 0

SELECT time,mean(v),min(v),max(v) FROM a where time > '2014-12-31 15:00:00.000' and time < '2014-12-31 15:35:00.00' group by time(15m);

時刻 time mean min max
00:00:00 1420038000000 1.5 0 3
00:15:00 1420038900000 5 4 6
00:30:00 1420039800000 3.5 0 7