Appian Community and Appian Academy are being upgraded. As a part of the upgrade, Appian Community is currently in read-only mode, and user registration is disabled until August 3. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!
The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.
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 ) )
Unknown 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.