If the hierarchy is not defined in our MDX query, default member is taken as contextMembers.
Query
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMembers(0).Name
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMember(0).Name
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
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 contextMembers.
In our example, [Time].[Calendar].contextMembers is {[Time].[Calendar].[Year].[2010],[Time].[Calendar].[Year].[2011]}
Query
WITH
FUNCTION StrToName(x_) as Generate( x_ as t , t.current.name, ", " )
MEMBER [Measures].[Year's Name] AS StrToName( [Time].[Calendar].contextMembers )
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
WHERE
{[Time].[Calendar].[Year].[2010],[Time].[Calendar].[Year].[2011]}
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS "2010, 2011"
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
If the hierarchy is defined in the slicer (aka. where clause), it is taken as contextMembers.
In our example, [Time].[Calendar].contextMembers is [Time].[Calendar].[Year].[2010]
Query
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMembers(0).NAME
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
WHERE
[Time].[Calendar].[Year].[2010]
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS "2010"
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
If the hierarchy is defined in the SubQuery (aka. subselect), it is taken as contextMembers.
In our example, [Time].[Calendar].contextMembers is [Time].[Calendar].[Year].[2010]
Query
WITH
FUNCTION StrToName(x_) as Generate( x_ as t , t.current.name, ", " )
MEMBER [Measures].[Year's Name] AS StrToName( [Time].[Calendar].contextMembers )
SELECT
[Measures].[Year's Name] ON 0
FROM
( Select {[Time].[Calendar].[Year].[2010],[Time].[Calendar].[Year].[2011]} on 0 from [Sales] )
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Year's Name] AS "2010, 2011"
SELECT
[Measures].[Year's Name] ON 0
FROM
[Sales]
If the hierarchy is defined in the SubQuery (aka. subselect), it is taken as contextMembers.
In our example, [Time].[Calendar].contextMembers is [Time].[Calendar].[Year].[2010]
Query
WITH
MEMBER [Measures].[Year's Name] AS [Time].[Calendar].contextMembers(0).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]
If the hierarchy is defined in the axis, it is taken as contextMembers.
In our example, [Time].[Calendar].contextMembers is [Time].[Calendar].[Year].[2010]
Query
WITH
MEMBER [Measures].[Q. Name] AS [Time].[Calendar].contextMembers(0).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].[Q. Name] AS [Time].[Calendar].contextMember.Name
SELECT
subset([Time].[Calendar].[2010].Children,0,2) ON 0
FROM
[Sales]
WHERE
[Measures].[Q. Name]
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]
If the hierarchy is defined in the axis and the subselect, only the 'applying' members will be returned
In our example, just one time [Time].[Calendar].[Year].[2010]
Query
WITH
MEMBER [Measures].[Q. Name] AS [Time].[Calendar].contextMembers(0).Name
SELECT
[Time].[Calendar].[Year] ON 0
FROM
[Sales]
WHERE
[Measures].[Q. Name]
FILTERBY
[Time].[Calendar].[2010]
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Q. Name] AS [Time].[Calendar].contextMember.Name
SELECT
[Time].[Calendar].[2010] ON 0
FROM
[Sales]
WHERE
[Measures].[Q. Name]
If the hierarchy is defined in the axis and the subselect, only the 'applying' members will be returned
In our example [Time].[Calendar].[Year].[Q1 2010] and [Time].[Calendar].[Year].[Q1 2011]
Query
WITH
MEMBER [Measures].[Q. Name] AS Generate([Time].[Calendar].contextMembers as t, t.current.Name, ", ")
SELECT
[Time].[Calendar].[2010] ON 0
FROM
[Sales]
WHERE
[Measures].[Q. Name]
FILTERBY
{[Time].[Calendar].[Q1 2010],[Time].[Calendar].[Q2 2010],[Time].[Calendar].[Q2 2011]}
Result
Assertion : Cell Equals
WITH
MEMBER [Measures].[Q. Name] AS "Q1 2010, Q2 2010"
SELECT
[Time].[Calendar].defaultmember ON 0
FROM
[Sales]
WHERE
[Measures].[Q. Name]
contextMembers does not work across hierarchies like currentMember
Query
WITH
MEMBER economy_unique_name as [Geography].[Economy].contextMembers(0).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]
The Generate() iteration is defining the contextMembers 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].contextMembers(0).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 contextMembers function will return a set.
Query
WITH
MEMBER [MyMeasure] AS SetToStr([Geography].[Geo].contextMembers)
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 contextMembers(n) function will return the Nth member of the set.
Query
WITH
MEMBER [MyMeasure] AS [Geography].[Geo].contextMembers(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]
contextMembers can be applied to a named set being iterated using the hierarchy, not with the set name as current- and
context members.
Query
WITH
SET [Countries] AS { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] }
MEMBER [Measures].[Names] AS Generate( [Countries], [Geography].[Geo].contextMembers(0).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]
contextMembers can not be applied to a named set being iterated.
Query
WITH
MEMBER [Measures].[Names] AS Generate( { [Geography].[Geo].[Continent].[America], [Geography].[Geo].[Continent].[Europe] } AS countries, countries.contextMembers.Name, "-" )
SELECT
[Measures].[Names] ON 0
FROM
[Sales]
Result
Names |
#ERROR : (OLAP_FUNCTION_ARGUMENT_TYPE_MISMATCH) |
Error Code : OLAP_FUNCTION_ARGUMENT_TYPE_MISMATCH
Error Message : ContextMembers() : argument (0) type mismatch: expected:'hierarchy|dimension|namedSet', got:'set'