2013-02-27 47 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似乎也是需要的。

我看到它的方式是內部的子立方體只是過濾切片,我認爲它們非常簡單,足以添加到主過濾器。