Professional Documents
Culture Documents
ASOTech Reference
ASOTech Reference
html
(//docs.oracle.com/en/)
Sign In (http://www.oracle.com/webapps/redirect/signon?nexturl=https://docs.oracle.com/cd/E57185_01/ESBTR/calc2mdx.html)
Home (/) / Applications (/en/applications/) / Oracle Enterprise Performance Management System Documentation, Release
11.1.2.4 (../index.htm) / Essbase (../nav/essbase.htm)
Technical Reference
The following sections provide information for rewriting Calculator formulas in MDX for outlines that have been
migrated from block storage to aggregate storage. Before attempting to rewrite formulas you should be familiar
with the basic workings of aggregate storage outlines in Essbase. See the Oracle Essbase Database
Administrator's Guide, which discusses all aspects of aggregate storage.
When translating Calculator formulas to MDX, keep in mind the following differences between block storage
outlines and aggregate storage outlines:
The storage characteristics of a member and hence all its associated cells are defined in a block storage outline
through Dynamic Calc (and Dynamic Calc and Store) attributes, and stored attributes. Such attributes do not
exist in an aggregate storage outline. Upper level members along an explicitly tagged accounts dimension and
members with formulas attached to them are always calculated dynamically in such a database.
In block storage outlines, calculation order is dependent on the order in which members appear in the outline
whereas formulas are executed in order of their dependencies in aggregate storage outlines. In addition,
calculation order in the event of ambiguity in the evaluation of a cell, and two-pass calculation tags are not
required in an aggregate storage outline.
The layout of block storage outlines and the separation of dimensions into dense and sparse has an effect on
the semantics of certain calculations, giving rise to concepts such as top-down calculation mode, cell and block
calculation mode, and create-blocks on equations. The simplicity of the aggregate storage outlines, which do not
separate dimensions into dense and sparse, do not require such concepts.
This section provides some general guidelines for translating Calculator formulas to MDX.
Be certain that the application has been redesigned to use an aggregate storage outline. In this regard, make
certain that formulas do not reference any block-storage specific outline constructs, such as variance functions that
1 of 6 02/10/2020, 12:47
Aggregate Storage and MDX Outline Formulas https://docs.oracle.com/cd/E57185_01/ESBTR/calc2mdx.html
rely on expense tagging, or functions that operate on shared members (for example, @RDESCENDANTS). Such
constructs are not valid in aggregate storage outlines.
Rewrite each function in the formulas attached to an explicitly tagged accounts dimension for which a direct
counterpart in MDX exists. Table 2 (calc2mdx.html#calc2mdx_1) provides specific information and examples. Then
identify functions for which an indirect rewrite is required. Table 2 (calc2mdx.html#calc2mdx_1) also provides information
and examples for these functions.
Understand the calculation order semantics for the formulas in the block storage outline. Organize the dependent
formulas in the aggregate storage outline carefully to achieve the same results as block storage.
If formulas reference custom-defined functions or macros consider rewriting them, if possible, using other MDX
functions.
The following table lists all functions in the Calculator language and their analogs in MDX (and vice versa). Where
a direct analog does not exist, transformation rules and examples are provided.
@ABS(Actual-Budget)
MDX
Abs([Actual]-[Budget])
2 of 6 02/10/2020, 12:47
Aggregate Storage and MDX Outline Formulas https://docs.oracle.com/cd/E57185_01/ESBTR/calc2mdx.html
MDX
Ancestors([New
York].parent,
[Market].levels(2))
@ATTRIBUTE(Can)
MDX
Attribute([Can])
@ATTRIBUTEBVAL(Caffeinated)
MDX
Product.CurrentMember.Caffeinated
@ATTRIBUTESVAL("Pkg Type")
MDX
Product.CurrentMember.[Pkg
Type]
3 of 6 02/10/2020, 12:47
Aggregate Storage and MDX Outline Formulas https://docs.oracle.com/cd/E57185_01/ESBTR/calc2mdx.html
@ATTRIBUTEVAL(Ounces)
MDX
Product.CurrentMember.Ounces
@AVG (avg.html) If the dimensionality of all Note that the MDX Avg function
elements in the input set to @AVG skips missing cell values by
is the same, use Avg (mdx_avg.html) default.
. Translate SKIPNONE to
INCLUDEEMPTY. Calculator
If SKIPMISSING is replaced by
SKIPNONE, the translation
changes to:
Avg([East].Children,
Sales, INCLUDEEMPTY)
Avg([East].Children,
IIF(Market.CurrentMember.Value=0,
Missing,
IIF(Market.CurrentMember=
Missing,0,
Market.CurrentMember.Value
) ) )
Avg([East].Children,
IIF(Market.CurrentMember=0,
Missing,
Market.CurrentMember.Value)
)
4 of 6 02/10/2020, 12:47
Aggregate Storage and MDX Outline Formulas https://docs.oracle.com/cd/E57185_01/ESBTR/calc2mdx.html
Avg(CrossJoin({Sales},
{[West].Children)})
If SKIPMISSING is replaced by
SKIPNONE, the translation
becomes:
Avg({[West].Children)},Sales,INCLUDE
Avg([West].Children),
IIF(Sales = 0, Missing,
IIF(Sales = Missing, 0,
Sales) ) )
@CHILDREN(Market)
MDX
Children(Market)
or
Market.Children
@MEMBER(@CONCATENATE("Qtr1",
"1"));
MDX
Concat("01", "01")
5 of 6 02/10/2020, 12:47
Aggregate Storage and MDX Outline Formulas https://docs.oracle.com/cd/E57185_01/ESBTR/calc2mdx.html
(#)
/index.html) Terms of Use (http://www.oracle.com/us/legal/terms/index.html) Your Privacy Rights (http://www.oracle.com/us/legal/privacy/index.html) | Cookie Preferences (#) |
Ad Choices (https://www.oracle.com/legal/privacy/marketing-cloud-data-cloud-privacy-policy.html#12)
Copyright © 2020, Oracle and/or its affiliates. (http://www.oracle.com/pls/topic/lookup?ctx=cpyr&id=en)
6 of 6 02/10/2020, 12:47