2013-02-27 48 views
0

我有以下MDX:MDX其中Vs子多维数据集混乱

SELECT NON EMPTY 
     { 
      [Measures].[My Measure] 
     } ON COLUMNS 
FROM 
(
    SELECT 
      NONEMPTY(StrToMember(@StartDate,CONSTRAINED):StrToMember(@EndDate,CONSTRAINED)) 
      ON COLUMNS, 

      NONEMPTY(STRTOSET(@Division)) 
      ON ROWS 
    FROM 
    (
     SELECT 
       NONEMPTY({[Project].[Project Status].&[Open],[Project].[Project Status].&[Closed]}) 
       ON COLUMNS, 

       NONEMPTY(STRTOSET(@TargetLanguage)) 
       ON ROWS 
     FROM [My Cube] 
    ) 
    WHERE STRTOSET(@Project) 
) 
WHERE STRTOSET(@Requestor) 

我的目标是:对@起始日期,@结束日期,@司过滤,@ TARGETLANGUAGE,@项目,@请求者(在除了过滤项目状态打开/关闭...)

他们只有这样才能让这些工作是通过玩弄子立方体和轴,直到我得到一个结果,似乎是正确的...在这里举个例子,我不明白为什么,在第二次选举中,我不能简单地把一个:

Where STRTOSET(@TargetLanguage) 

而不是将它放在行上。我不能100%确定这是因为它很刺激而返回正确的数据......任何解释?谷歌迄今一直没有帮助,这导致我相信把东西放在子目录中的行不是正确的解决方案...

谢谢!

+0

我将明确地构建仅1个子立方体放置集和维on1,on2,on3和更多的轴。这将是一个清晰快捷的mdx查询。 – michele 2013-02-28 10:31:54

回答

0

试试这个:

我不是100%,与子多维数据集,但重构你的代码,我认为这是一样的:

SELECT NON EMPTY 
     { 
      [Measures].[My Measure] 
     } ON COLUMNS 
FROM 
     [My Cube] 
WHERE 
(
    STRTOSET(@Requestor), 
    STRTOSET(@TargetLanguage), 
    {[Project].[Project Status].&[Open],[Project].[Project Status].&[Closed]}, 
    STRTOSET(@Division), 
    {StrToMember(@StartDate,CONSTRAINED):StrToMember(@EndDate,CONSTRAINED)}, 
    STRTOSET(@TargetLanguage) 
) 

并告诉你真相的第一个非空的没有按” t似乎也是需要的。

我看到它的方式是内部的子立方体只是过滤切片,我认为它们非常简单,足以添加到主过滤器。