map a numerical range
Hello everybody,
I would need your ideas for an advanced use of the "Formula" process
the needed:
in a "prepare receipt", and more particularly in a "Formula" process, I would have liked to be able to create a custom function.
Is it possible ?
Why this ?
==> I need to create a special math function, which maps one numeric range to another numeric range, similar to Arduino's MAP function for those who know)
Thank you
Operating system used: Windows  Linux Subsystem
Best Answer

Alexandru Dataiker, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 1,226 Dataiker
Hi,
If you are referring to something like.
https://www.arduino.cc/reference/en/language/functions/math/map/
One option is using python functions are available directly in the prepare recipe.
The columns for x, in_min in_max , out_min and out_max need to be replaced with the actual column names in your dataset instead of of "num_1" , "num_2" in the code below.
def _map(x, in_min, in_max, out_min, out_max): return int((x  in_min) * (out_max  out_min) / (in_max  in_min) + out_min) def process(row): y = _map(int(row["num_1"]),int(row["num_2"]), int(row["num_3"]), int(row["num_4"]), int(row["num_5"])) return (y)
. Let me know if that helps or if you are looking for something else.
This can also be done with a DSS formula in the above example it would be :
(num_1  num_2) * (num_5  num_4)/ (num_3  num_2) + num_4
Answers

AlexT, your solution was the right one.
In fact, I had already written the whole formula with the "FORMULA" process. So my idea was to create an additional "MAP" function to use with "Formula".But in the end, I completely rewrote my formula with the Python process, which works fine for him.
Thanks for the help