Assumptions & result sets
Overview
Use this category when you need to control how assumptions affect a node’s values or when you want to combine result sets. These functions help you compare “with vs without assumptions”, append non-overlapping outputs, and support legacy behavior during migration.
Start here if…
You want to see a node without assumptions applied (for comparison/debugging).
You want to combine result sets from multiple nodes (append non-overlapping slices).
You’re migrating older models and encounter legacy disaggregation logic.
Not here if…
You want to allocate values down to more detail → see Dimensionality & hierarchies
You want to filter to a subset, fill gaps, or rank → see Filtering & data shaping
Mental model
BASELINE and NONSIM help you control assumptions:
BASELINEremoves assumptions on the node and upstream.NONSIMremoves assumptions on the node itself but keeps upstream assumptions.
UNION combines non-intersecting result sets on the same levels.
DISAGGREGATE exists for legacy compatibility and should be replaced by DISTRIBUTE in new models.
Common patterns
Compare “with assumptions” vs “baseline” →
BASELINE('Revenue')
Use to validate how assumptions impact a result.Remove assumptions on the node only →
NONSIM('Revenue')
Use when you want to isolate the effect of assumptions placed on the node itself.Append disjoint time slices →
UNION('Actuals2024', 'Actuals2025')
Use when each input covers different periods (no overlap) but you want one continuous output.Enforce “same levels” as a guardrail →
UNION('NodeA', 'NodeB')
Use when you want the model to fail fast if level structure diverges (instead of silently combining).Migrate legacy disaggregation logic →
DISAGGREGATE(...)→ replace withDISTRIBUTE(...)
UseDISAGGREGATEonly for backwards compatibility; preferDISTRIBUTEfor new models.
Functions in this category
Function | Description |
|---|---|
Returns the value of a node with no assumptions applied on the node or anywhere upstream. | |
Returns a node’s value without assumptions on the node itself while applying assumptions upstream. | |
Combines the result sets of two or more input nodes. | |
Legacy function that distributes values onto a level based on another node’s distribution; use |
Choosing between similar functions
BASELINE vs NONSIM
Use
BASELINEto remove assumptions on the node and upstream.Use
NONSIMto remove assumptions on the node only, while keeping upstream assumptions.
UNION vs
+Use
UNIONwhen you want to append disjoint slices and enforce same levels + no overlap.Use
+when overlap is allowed/expected (it’s not constrained likeUNION).
UNION vs reshaping (ROLLUP/EXPAND/…)
Use
UNIONto combine result sets from multiple nodes.Use reshaping functions when the goal is to change granularity or dimensionality.
DISAGGREGATE vs DISTRIBUTE
Use
DISAGGREGATEonly for legacy compatibility.Use
DISTRIBUTEfor new models and ongoing development (Dimensionality & hierarchies).
Pitfalls & troubleshooting
Baseline looks “too different”: verify where assumptions are applied (on the node vs upstream) and choose
BASELINEvsNONSIMaccordingly.UNION fails because levels don’t match: confirm both inputs have the exact same level set (same dimensions/levels, same structure).
UNION fails because rows overlap: ensure the same intersection does not exist in more than one input; split inputs into disjoint slices (often by time or member subsets), or use
+if overlap is intended.Legacy function in active use: if you still rely on
DISAGGREGATE, plan migration toDISTRIBUTEto avoid legacy limitations and reduce maintenance risk.
Related sections
Operators using
+when overlap inUNIONis intendedDimensionality & hierarchies
DISTRIBUTEand shaping before combiningFiltering & data shaping reduce result sets before combining
Formula basics evaluation order and how nested functions behave
Troubleshooting guide assumptions, missing values, unexpected results