I need an expression which finds corresponding value based on ranges:
Input:x{v1,v2,...,vn+1}{r1,r2,...,rn}
Result:if (x<=r1) then v1else if (x<=r2) then v2....else if (x<=rn) then vnelse vn+1
Thanks
Discussion posts and replies are publicly visible
displayValue() is the function you need. docs.appian.com/.../fnc_conversion_displayvalue.html
To my best understanding displayValue is checks for equality not for less or equal
can you use match function for this?
Assuming that the list of ranges is sorted, the following code should do this. I use the list comprehension feature of operators to compare x to all ranges, the use where() to get the indexes of matches, pick the first match and the pick the value for that matching index.
a!localVariables( local!x: 4, local!values: {23, 5, 468, 123, 42, 500}, local!ranges: {1, 2, 3, 4, 5}, index( local!values, index(where(local!x <= local!ranges), 1, count(local!values)), 0 ) )
Deepak gupta said:match function
I was wondering this too, though the issue might be on setting it up to handle arbitrarily-long input lists, instead of fixed-length lists. That's why it might end up needing to rely on looping functions and/or functions that loop inherently like where(), as Stefan suggested below.