The @NONEMPTYTUPLE calculation function is an Essbase formula directive you can use to force queries to use only data dependent cells when executing the formula. For Release 21c and later, use @QUERYBOTTOMUP instead of this function.

@QUERYBOTTOMUP replaces this function in Essbase 21c.

You can use this function before a formula to force queries to use only data dependent cells when executing the formula. This optimizes query times by identifying the required intersections for calculation, making the query time proportional to input data size.

This function can be used as a formula directive. Using it before the formula specification is recommended when the formula is long and contains many cross-dimensional operators. Such formulas often cause the formula cache to grow large while also being sparse (having a relatively small input data set). Using this directive causes query execution to occur in bottom-up mode, to resolve dependency analysis quickly in cases where the formula cache is sparse.


@NONEMPTYTUPLE [(nonempty_member_list)]



Optional. A list of members from the current dimension (the dimension in which this formula applies).

The formula will execute in bottom-up mode if any of the members specified in nonempty_member_list are empty. If nonempty_member_list is not specified, the formula will execute in bottom-up mode if any dependent members of the current formula are empty. For most use cases, you do not need to specify nonempty_member_list; simply place @NONEMPTYTUPLE before the formula syntax to cause bottom-up formula execution.


The following outline formula example is based on the Compensation Analytics sample cube, for which the application workbook is available in the HR Analysis directory of the Applications gallery.

@NONEMPTYTUPLE("Headcount under Target")
IF("Headcount under Target"!=#missing)
"Market Movement"*"Size %"->"Actual"->"Sep17"->"No JG"->"unassigned_OU"->"No Job Code"->"No EE"->"No_MktComp"*"BASE"*"Competitive Incr %"->"Actual"->"Sep17"->"No Region"->"No JG"->"unassigned_OU"->"No Job Code"->"No EE"->"No_MktComp";

The following example is for a calculation script use case:

"Headcount under Target"(
IF("COMPARATIO"!=#missing AND "COMPARATIO"<="Competitive Target"->"No JG"->"No Region"->"unassigned_OU"->"No EE"->"No Job Code"->"No_MktComp")

See Also

NONEMPTYTUPLE in MDX Optimization Properties

IGNORECONSTANTS application configuration setting