StrToMember不接受计算量度(mdx) [英] StrToMember does not accept calculated measure (mdx)

查看:55
本文介绍了StrToMember不接受计算量度(mdx)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试通过使用一些经过计算的度量来创建成员(我在这里将其称为"MyDay").我在轴上返回日期成员,并且这些成员具有我要使用的属性.我可以返回属性本身,但不能创建成员并使用它.

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
}

如果我将"MyDateDimension.CurrentMember"替换为某些硬编码的日期成员, 它工作正常. 而且这也可以:

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])

推荐答案

如果将strToMember直接放在SomeMeasure中,则事情开始起作用:

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];

稍微整齐的版本:

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];

以上返回以下内容:

所以在您的多维数据集中是这样的:

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;

这篇关于StrToMember不接受计算量度(mdx)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆