In a Flux query I was writing I wanted to negate the fetched values using a map
function to multiply each value by -1
:
map(fn: (r) => ({ _value: r._value * -1 }))
To my surprise this yielded an error:
type conflict: int != float
Took me a few Google Search Coupons to realize the error got trigger not by the type of the _value
, but by the -1
in there. The solution therefore is really simple: don’t multiply by an integer (e.g. -1
) but multiply by a float (e.g. -1.0
); like so:
map(fn: (r) => ({ _value: r._value * -1.0 }))
😅
Thank me with a coffee.
I don\'t do this for profit but a small one-time donation would surely put a smile on my face. Thanks!
To stay in the loop you can follow @bramus or follow @bramusblog on Twitter.
thanks…..solved my Problem
Hi, I am also new with flux and do struggle quite a lot. I have the opposite issue.
I wanted to map the integer values (r._value) 1 and 0 to float 49.9 and 50.1 so I tried
|> map(fn: (r) => ({ r with _value: 49.9+0.2*r._value }))
So I get the same issue. But I can’t just switch to int, can I? Is there a solution to do that?
I found the solution for the opposite: map int to float. it is not the map function, it seams to be an issue that int can not multiply with float. Change the type first.
This works:
|> map(fn: (r) => ({ r with _value: 49.985+0.03*float(v:r._value)}))
where r._value is of type int.
Thanks. Had to change 1000 to 1000.0 🙂