Complex Scopes
Complex scopes simplify limit creation by allowing you to define scopes across a set of scope location members, which is often required when managing limits.
Complex Scopes
Atoti Limits currently supports four types of complex scopes at a defined level. These are:
- IN scope / “(For each) selected” in the UI
- NOT IN scope / “(For each) excluding selected” in the UI
- TOTAL IN scope / “(Total) of selected” in the UI
- TOTAL NOT IN scope / “(Total) excluding selected” in the UI
See the operators section for more details on each type of scope.
Complex Scope Definitions
Complex scopes are defined similarly to simple scopes, with some added notation. Each location is pipe-separated, the level names are normalized and missing parents of multi-level hierarchies are derived depending on user-defined scope properties.
note
Whitespaces between symbols will be trimmed.
Here are some examples:
IN
/ “(For each) selected” in the UI
Here the limit is evaluated where the level member is IN a set of supplied members. The notation is:
<Level Name> = [ <Level Member 1> + <Level Member 2> + ... ]
For example, to evaluate the limit only where the currency is USD or EUR, define the location as:
Currency = [ USD + EUR ]
note
The +
symbol here is merely for notational purposes and does not indicate addition of the members. We require distinct
symbols to be used in order to correctly parse the scope on file import. For very complex scopes, we recommend using the UI rather than
editing the file.
NOT IN
/ “(For each) excluding selected” in the UI
Here the limit is evaluated where the level member is NOT IN a set of supplied members. The notation is:
<Level Name> <> [ <Level Member 1> + <Level Member 2> + ... ]
For example, to evaluate the limit only where currency is not equal to USD or EUR, define the location as:
Currency <> [ USD + EUR ]
note
<>
is the MDX representation of “not equal to”.
TOTAL IN
/ “(Total) of selected” in the UI
warning
A limit of this scope should not be used in conjunction with other limits or scope locations. Otherwise, the Business Cube will not be able to determine the location for evaluating the limit.
Here the limit is evaluated as the total of where the level member is IN a set of supplied members. The notation is:
<Level Name> &= [ <Level Member 1> + <Level Member 2> + ... ]
For example, to evaluate the sum of values where Book is Book 1 and Book 2, define the location as:
Book &= [ Book 1 + Book 2 ]
note
The wildcard (*
) and AllMember
values are not allowed for this type of scope.
TOTAL NOT IN
/ “(Total) excluding selected” in the UI
warning
A limit of this scope should not be used in conjunction with other limits or scope locations. Otherwise, the Business Cube will not be able to determine the location for evaluating the limit.
Here the limit is evaluated as the total of locations where the level member is NOT IN a set of supplied members.
<Level Name> &<> [ <Level Member 1> + <Level Member 2> + ... ]
For example, to evaluate the sum of values of the Book level, excluding Book 3 and Book 4, define the location as:
Book &<> [ Book 3 + Book 4 ]
note
The wildcard (*
) and AllMember
values are not allowed for this type of scope.
Special case: Defining multiple multi-Level members
We may want to define a location on a multi-level hierarchy for multiple members. For example, we may want to evaluate at:
City = North America / United States / New York City
City = Europe / Ireland / Dublin
To do so, for this special case we use the following notation:
<Selected Level> <Operator> [ <Level Parent_0>=<Level Parent Value_0>&<Level Parent_1>=<Level Parent Value_1>&...&<Selected Level>=<Selected Value 1> +
<Level Parent_0>=<Level Parent Value_2>&<Level Parent_1>=<Level Parent Value_3>&...&<Selected Level>=<Selected Value 2> +
...
<Level Parent_0>=<Level Parent Value_2>&<Level Parent_1>=<Level Parent Value_3>&...&<Selected Level>=<Selected Value n> +
]
where:
Operator
is the symbol of the operator to be used.Level Parent_n
is the level at ordinaln
in the level path. This order is important and the topmost parent should be the first in the path.
In our city example above, this would look like:
City = [
Continent@Geography=North America & Country=United States & City=New York City +
Continent@Geography=Europe & Country=Ireland & City=Dublin
]
Scope Operators
A scope operator determines the type of operation a complex scope uses. The options are:
- EQUALS
- NOT_EQUALS
- TOTAL_EQUALS
- TOTAL_EXCEPT
Each operator can be inclusive or exclusive, and aggregated or non-aggregated. On evaluation:
- an inclusive operator includes the level members specified in its definition, while an exclusive operator will exclude the members specified in its definition.
- an aggregated operator will evaluate only at the
AllMember
level for the levels specified in its definition, while a non-aggregated operator will only apply at the level members for the members specified in its definition.
Complex Scope Type | Operator | Symbol | Inclusive | Aggregated | Example | Example Value Description |
---|---|---|---|---|---|---|
IN | EQUALS | = | Yes | No | Book=[ Book 1 + Book 2 ] | Evaluation occurs where the Book level member equals Book 1 or Book 2 . |
NOT IN | NOT_EQUALS | <> | No | No | Book<>[ Book 1 + Book 2 ] | Evaluation occurs anywhere where the Book level member is not equal to Book 1 or Book 2 . |
TOTAL IN | TOTAL_EQUALS | &= | Yes | Yes | Book&=[ Book 1 + Book 2 ] | The value is the sum of Book 1 and Book 2 , and will be displayed at the AllMember level. |
TOTAL NOT IN | TOTAL_EXCEPT | &<> | No | Yes | Book&<>[ Book 1 + Book 2 ] | The value is the sum of all members of the Book level, excluding Book 1 and Book 2 , and will be displayed at the AllMember level. |