0

How to get time differences of data points of a series of influxdb data?

I have found the following working method, but it seams awfully inefficient. Is there a more simple way to do it?

Explanation: after selecting my series with filters, I replace every value with 1.0. Then I sum up each consecutive value. This sum is time independent. Basically it puts an index or number to each data point. Then I take the derivative (this IS time dependent). Since every consecutive value is exactly 1.0 higher, the derivative is 1.0/timediff, so take the inverse and get the timediff in seconds.

from(bucket: "MyBucket")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "main_sampled_data")
  |> filter(fn: (r) => r["_field"] == "Data")
  |> map(fn: (r) => ({ r with _value: 1.0}))
  |> cumulativeSum()
  |> derivative()
  |> map(fn: (r) => ({ r with _value: 1.0/r._value}))
  |> yield(name: "timediff")
phu
  • 43
  • 4
  • I'm not entirely sure what you are trying to achieve here, but it looks like stateDuration() might help you. See https://docs.influxdata.com/flux/v0.x/stdlib/universe/stateduration/ – Superhubert Jun 20 '23 at 07:38

0 Answers0