New Functions

The following functions are new. They operate on a fully qualified member name. These functions are merely string manipulation functions. Therefore, they are not aware of any metadata beyond the input fully qualified name.

PARENT(<fq_name>)

Returns the fully qualified parent name of <fq_name>. Semantically, this means: output the substring of <fq_name> that is the result of chopping off the rightmost period (.) and everything after it. If there are no periods in the input string, return NULL.

ANCESTOR(<fq_name>, <generation>)

Returns the ancestor of <fq_name> at <generation> levels above <fq_name>. For example,

ANCESTOR(Geography.All.USA.Kansas.Topeka, 1) = 
   Geography.All.USA.Kansas

Semantically, the output results from removing the <generation>th period and everything following it, and then returning the resulting string. If LEVEL(<fq_name>) + 1 <= <generation>, then the result is the dimension name.

LEVEL(<fq_name>)

Returns the zero-based level (root = 0) of the input member. Semantically, the output is equal to counting the number of periods in <fq_name> and decrementing it by 1. If <fq_name> does not have any periods, then –1 is returned.

REVERSE(<fq_name>)

Reverses <fq_name>. For example, “Geography.All.USA.Kansas” is converted to “Kansas.USA.All.Geography.”

COMPONENT(<fq_name>, <level>)

Gives the fully qualified name of the ancestor of the input member at the specified level. The special level –1 can be used to get the dimension name. NULL is returned if <level> is less than –1, ALL() is returned if <level> is greater than LEVEL(<fq_name>). For more information on ALL(), see “Special Value, ALL().”