I’m just upgrading from InfluxDB 1.8 to 2.0 and I still have my weaknesses here.
With the following code I calculate the average consumption per hour. Here I want to add another column with a simple mathematical calculation.
Unfortunately it doesn’t work that way. Can someone show me where the error is.
from(bucket: "stromzaehler")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "stromzaehler")
|> aggregateWindow(every: 1h, fn: spread, createEmpty: false)
|> yield(name: "mean")
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({ r with _value: r._stromzaehler * 100.0 }))
grant1
January 15, 2023, 11:20pm
2
Hi @Cavekeeper
What does the error message say?
Just a guess here, but does this work?
from(bucket: "stromzaehler")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "stromzaehler")
|> aggregateWindow(every: 1h, fn: spread, createEmpty: false)
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({ r with NewColumnHere: r._stromzaehler * 100.0 }))
|> yield(name: "YourNewStream")
There is no error message.
The problem is that the result of the calculation is “null”.
grant1
January 16, 2023, 10:18am
4
What is the result when you remove the map()
function? Please post here.
I found the solution.
The key code in the map line is:
r.value
and not
r._stromzaehler
This is the code that works:
from(bucket: "stromzaehler")
|> range(start: today())
|> filter(fn: (r) => r["_measurement"] == "stromzaehler")
|> aggregateWindow(every: 1h, fn: spread, createEmpty: false)
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({ r with NewColumnHere: r.value * 100.0 }))
|> yield(name: "YourNewStream")
1 Like