If the hierarchy is not defined in our MDX query, default member is taken as contextMember.
Query
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMember.Name
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].DefaultMember.Name
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
If the hierarchy is defined in the slicer (aka. where clause), it is taken as contextMember.
In our example, [Time].[Calendar].contextMember is [Time].[Calendar].[Year].[2011]
Query
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMember.NAME
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
WHERE
[Time].[Calendar].[Year].[2011]
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS "2011"
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
If the hierarchy is defined in the SubQuery (aka. subselect), it is taken as contextMember.
In our example, [Time].[Calendar].contextMember is [Time].[Calendar].[Year].[2010]
Query
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMember.NAME
SELECT
[Measures].[Year's Name] ON 0
FROM
( Select [Time].[Calendar].[Year].[2010] on 0 from [Sales] )
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS "2010"
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMember.NAME
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
FILTERBY [Time].[Calendar].[Year].[2010]
ContextMember does not work across hierarchies like currentMember
Query
WITH
MEMBER economy_unique_name as [Geography].[Economy].contextMember.uniqueName
SELECT
economy_unique_name on 0,
Descendants([Geography].[Geo].[Canada]) on 1
FROM [Sales]
Result
|
economy_unique_name |
Canada |
[Geography].[Economy].[ALL] |
Quebec |
[Geography].[Economy].[ALL] |
Toronto |
[Geography].[Economy].[ALL] |
Assertion : Cell Equals
WITH
MEMBER economy_unique_name as [Geography].[Economy].defaultMember.uniqueName
SELECT
economy_unique_name on 0,
Descendants([Geography].[Geo].[Canada]) on 1
FROM [Sales]
If the hierarchy is defined in the axis, it is taken as contextMember.
In our example, [Time].[Calendar].contextMember is [Time].[Calendar].[Year].[2010]
Query
WITH
MEMBER [Measures].[Q. Name] AS [Time].[Calendar].contextMember.Name
SELECT
subset([Time].[Calendar].[2010].Children,0,2) ON 0
FROM
[Sales]
WHERE
[Measures].[Q. Name]
Result
Q1 2010 |
Q2 2010 |
Q1 2010 |
Q2 2010 |
Assertion : Cell Equals
WITH
MEMBER [Measures].[Q1] AS [Time].[Calendar].[Q1 2010].Name
MEMBER [Measures].[Q2] AS [Time].[Calendar].[Q2 2010].Name
SELECT
{[Measures].[Q1],[Measures].[Q2]} ON 0
FROM
[Sales]
The Generate() iteration is defining the contextMember member for the [Geography].[Geo] hierarchy.
Query
WITH
MEMBER [Measures].[Names] AS Generate( { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] } AS countries, [Geography].[Geo].contextMember.Name, "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "America-Europe"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
When the tuple contains multiple members of the same hierarchy the contextMember function will return a set.
Query
WITH
MEMBER [MyMeasure] AS SetToStr([Geography].[Geo].contextMember)
SELECT
[Geography].[Geo].[Continent].[America] on 0,
[Geography].[Geo].[Continent].[Europe] on 1
FROM [SALES]
WHERE [MyMeasure]
Result
|
America |
Europe |
{[Geography].[Geo].[Continent].&[America],[Geography].[Geo].[Continent].&[Europe]} |
Assertion : MDX Equals
WITH
MEMBER [MyMeasure] AS "{" + [Geography].[Geo].[Continent].[America].uniqueName + ","+ [Geography].[Geo].[Continent].[Europe].uniqueName + "}"
SELECT
[Geography].[Geo].[Continent].[America] on 0,
[Geography].[Geo].[Continent].[Europe] on 1
FROM [SALES]
WHERE [MyMeasure]
When the tuple contains multiple members of the same hierarchy the contextMember(n) function will return the Nth member of the set.
Query
WITH
MEMBER [MyMeasure] AS [Geography].[Geo].contextMember(0).name
SELECT
[Geography].[Geo].[Continent].[America] on 0,
[Geography].[Geo].[Continent].[Europe] on 1
FROM [SALES]
WHERE [MyMeasure]
Result
Assertion : MDX Equals
WITH
MEMBER [MyMeasure] AS [Geography].[Geo].[Continent].[America].name
SELECT
[Geography].[Geo].[Continent].[America] on 0,
[Geography].[Geo].[Continent].[Europe] on 1
FROM [SALES]
WHERE [MyMeasure]
contextMember can be applied to a named set being iterated as declared within a function parameter.
Query
WITH
MEMBER [Measures].[Names] AS Generate( { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] } AS countries, countries.contextMember.Name, "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "America-Europe"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
contextMember can be applied to a named set being iterated.
Query
WITH
SET [Countries] AS { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] }
MEMBER [Measures].[Names] AS Generate( [Countries], countries.contextMember.Name, "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "America-Europe"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
contextMember can be applied to a tuple set (being equivalent to the contextMember() function).
Query
WITH
SET [MySet] AS { ( [Geography].[Geo].[New York], [Product].[icCube] ) }
MEMBER [Measures].[Names] AS Generate( [MySet], TupleToStr( MySet.contextMember ), "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Names |
([Geography].[Geo].[City].&[New York],[Product].[Prod].[Article].&[icCube]) |
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "(" + [Geography].[Geo].[City].&[New York].uniqueName + "," + [Product].[Prod].[Article].&[icCube].uniqueName + ")"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Applied to a named set (of members) being iterated as declared within a function parameter.
Query
WITH
MEMBER [Measures].[Names] AS Generate( { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] } AS countries, countries.contextMember.Name, "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "America-Europe"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Applied to a named set (of members) being iterated.
Query
WITH
SET [Countries] AS { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] }
MEMBER [Measures].[Names] AS Generate( [Countries], countries.contextMember.Name, "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "America-Europe"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Applied to a named set (of tuples) being iterated.
Query
WITH
SET [MySet] AS { ( [Geography].[Geo].[New York], [Product].[icCube] ) }
MEMBER [Measures].[Names] AS Generate( [MySet], TupleToStr( MySet.contextMember ), "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Names |
([Geography].[Geo].[City].&[New York],[Product].[Prod].[Article].&[icCube]) |
Assertion : MDX Equals
WITH
MEMBER [Measures].[Names] AS "(" + [Geography].[Geo].[City].&[New York].uniqueName + "," + [Product].[Prod].[Article].&[icCube].uniqueName + ")"
SELECT
[Measures].[Names] ON 0
FROM
[Sales]