Tiering & Scale
These events take a numeric value and return an array based on breakpoints.
Certain business operations take a value, like 500
, and break it apart into smaller pieces. Each piece could represent the amount of demand for a certain item, or the number of units requested at a particular price.
To support the modeling of these operations, SEL has functions that split numeric values into arrays, called Tiering and Scale.
Tiering
Like the name implies, Tiering
defines a set of tiers, using the following syntax:
=Tiering([5, 10, 20])
This establishes 4 tiers: 0-5, 6-10, 11-20, and 20+.
When this function receives a number, for example, 13
, it will find the tier 13
belongs to -- in this case, the third tier: 11-20. Because 13
belongs in the third tier, this function will return:
[0, 0, 1, 0]
This 1
points to the tier the input value belongs in.
From here, we can send this [0, 0, 1, 0]
to an expression, like * [49, 99, 149, 249]
, which could represent the price of each tier. This multiplication expression would return the value 149
because 1 * 149 = 149.
Scale
The Scale
function defines a set of ranges with breakpoints, like so:
=Scale([150, 250, 500])
This establishes 4 ranges: 0-150, 151-250, 251-500, and 501+.
If the value 1000
were sent to this function, it would return:
[150, 100, 250, 500]
150 units fit inside the first range, another 100 inside the second, then 250, and then the remaining 500 into the final (highest) range of 501+.
From here, we can send this list to an expression like * [1.99, 1.49, 1.25, 0.99]
, which could represent the value or price of each unit in each range.
When the output of the Scale, a list, is multiplied by another list, SEL returns the single numeric dot-product of the two lists. In this case: (1.99 x 150) + (1.49 x 100) + (1.25 x 250) + (0.99 x 500) = 1255.
Updated 10 months ago