Reputation: 8150
I try to create a member by using some calculated measure (I have called it 'MyDay' here). I return date members on an axis and the members have a property which I want to use. I can return the property itself, but cannot create the member and work with it.
WITH
MEMBER [Measures].[MyDay] as DatePart("d", MyDateDimension.CurrentMember.Properties("MyProperty"))
MEMBER MyDateDimension.[MyMember] AS
STRTOMEMBER("MyDateDimension.&[2015]&[4]&[" + CStr([Measures].[MyDay]) + "]")
MEMBER [Measures].[SomeOther] as (MyDateDimension.[MyMember], [Measures].[Other]
SELECT
{
MyDateDimension.Members)
} ON COLUMNS,
{
[Measures].[MyDay] //works,
[Measures].[SomeOther] //error
}
If I replace 'MyDateDimension.CurrentMember' by some hard coded date member, it works fine. And this also works:
MEMBER [Measures].[SomeOther] as (STRTOMEMBER("MyDateDimension.&[2015]&[4]&[" + CStr([Measures].[MyDay]) + "]"), [Measures].[Other])
Upvotes: 0
Views: 1568
Reputation: 35587
If you put the strToMember directly in the SomeMeasure then things start to function:
WITH
MEMBER [Measures].[MyDay] AS
Datepart
("d"
,[Date].[Calendar].CurrentMember.Member_Caption
)
MEMBER [Date].[Calendar].[MyMember] AS
StrToMember
(
'[Date].[Calendar].&[200603' + Cstr([Measures].[MyDay]) + ']'
,constrained
)
MEMBER [Measures].[SomeOther] AS
(
//[Date].[Calendar].[MyMember]
StrToMember
(
'[Date].[Calendar].&[200603' + Cstr([Measures].[MyDay]) + ']'
,constrained
)
,[Measures].[Internet Sales Amount]
)
SELECT
{
[Measures].[MyDay]
,[Measures].[SomeOther]
} ON COLUMNS
,Tail
(
Descendants
(
[Date].[Calendar].[Month].&[2005]&[8]
,[Date].[Calendar].[Date]
)
,10
) ON ROWS
FROM [Adventure Works];
A slightly tidier version:
WITH
MEMBER [Measures].[MyDay] AS
Datepart
("d"
,[Date].[Calendar].CurrentMember.Member_Caption
)
MEMBER [Measures].[MyDayString] AS
'[Date].[Calendar].&[200603' + Cstr([Measures].[MyDay]) + ']'
MEMBER [Measures].[SomeOther] AS
(
StrToMember
(
[Measures].[MyDayString]
,constrained
)
,[Measures].[Internet Sales Amount]
)
SELECT
{
[Measures].[MyDay]
,[Measures].[SomeOther]
} ON COLUMNS
,Tail
(
Descendants
(
[Date].[Calendar].[Month].&[2005]&[8]
,[Date].[Calendar].[Date]
)
,10
) ON ROWS
FROM [Adventure Works];
Above returns the following:
So something like this in your cube:
WITH
MEMBER [Measures].[MyDay] AS
Datepart
("d"
,MyDateDimension.CurrentMember.Properties("MyProperty")
)
MEMBER [Measures].[MyDayString] AS
StrToMember('MyDateDimension.&[2015]&[4]&[' + Cstr([Measures].[MyDay]) + ']')
MEMBER [Measures].[SomeOther] AS
(
StrToMember
(
[Measures].[MyDayString]
,constrained
)
,[Measures].[Other]
)
SELECT
{
[Measures].[MyDay]
,[Measures].[SomeOther]
} ON COLUMNS
,{MyDateDimension.MEMBERS} ON ROWS
FROM YourCube;
Upvotes: 1
Reputation: 5253
Try using the SUM
function in the definition of [Measures].[SomeOther]
. It will accept calculated members.
MEMBER [Measures].[SomeOther] as
SUM(
MyDateDimension.[MyMember],
[Measures].[Other]
)
Upvotes: 0