- 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
Advanced scope definitions
Advanced scopes are defined similarly to regular 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.In the following examples we denote scopes using the standard verbose format as it is more
intuitive to new users. More experienced users may prefer to use
the Simplified scopes notation.
Whitespaces between symbols will be trimmed.
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:
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:
<> is the MDX representation of “not equal to”.Atoti Limits already rejects two overlapping
IN scoped limits on the same structure. This happens when their member sets intersect and their validity dates overlap. See IN / “(For each) selected” in the UI.Proving that two NOT IN member sets never overlap is not always possible. For example, Book <> [ A + B ] and Book <> [ C + D ] both still match Book = E. Because of this, Atoti Limits does not attempt the same overlap check for NOT IN scopes.Instead, the limits.scope.allow-multiple-not-in-limits property controls a simpler, conservative rule. Setting it to false allows at most one NOT IN scoped limit on a given structure at a time. Creating a second NOT IN limit whose validity dates overlap an existing one is then rejected. This applies regardless of whether the two excluded member sets actually intersect. Two NOT IN limits with non-overlapping dates are still both allowed.This restriction only applies between two NOT IN scopes. It does not restrict combining a NOT IN limit with an IN or wildcard limit on the same structure.By default, limits.scope.allow-multiple-not-in-limits is true, which preserves the unrestricted, pre-existing behavior.TOTAL IN / “(Total) of selected” in the UI
Here the limit is evaluated as the total of where the level member is IN a set of supplied members. The notation is:
The wildcard (
*) and AllMember values are not allowed for this type of scope.TOTAL NOT IN / “(Total) excluding selected” in the UI
Here the limit is evaluated as the total of locations where the level member is NOT IN a set of supplied members.
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:Operatoris the symbol of the operator to be used.Level Parent_nis the level at ordinalnin the level path. This order is important and the topmost parent should be the first in the path.
Scope operators
A scope operator determines the type of operation an advanced scope uses. The options are:- EQUALS
- NOT_EQUALS
- TOTAL_EQUALS
- TOTAL_EXCEPT
- 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
AllMemberlevel 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.
| Advanced 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. |