2012-05-31 99 views
1

假設我們有以下尺寸MDX CROSSJOIN有5個維度

  • DATE
  • 承包商
  • COLOR
  • SIZE

和一組的6項措施,我們希望得到針對特定年份的每個Semestrer,三個月,每月,承包商,顏色和尺寸的6項措施。

這裏是我的MDX查詢:

SELECT 
    { 
     ... the 6 measures ... 
    } ON COLUMNS, 
    { 
      (
       [Dim DATE].[year].[year].AllMembers * 
       [Dim DATE].[SEMESTRE NOM].[SEMESTRE NOM].AllMembers * 
       [Dim DATE].[TRIMESTRE NOM].[TRIMESTRE NOM].AllMembers * 
       [Dim DATE].[MOIS NOM].[MOIS NOM].AllMembers * 
       [Dim CONTRACTOR].[Name CONTRACTOR].AllMembers * 
       [Dim COLOR].[Name COLOR].AllMembers * 
       [Dim SIZE].[Name SIZE].AllMembers 
     ) 
    } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 

FROM ( 
    SELECT ({ StrToSet("[Dim DATE].[year].[year].&[" + @Year + "]" , CONSTRAINED) }  

    ) ON COLUMNS 
FROM [TheCube] 

這是非常緩慢(20分鐘以上),只有6承包商,6色,18種尺寸...,什麼是.AllMembers.Members之間的差異?

+0

謝謝!它打開了我的眼睛 –

回答

1

根據您的層次結構中的實際年數,可以使用交叉連接創建一個相當大的集合。正如icCube在評論中提到的那樣,爲什麼不使用:

StrToSet("[Dim DATE].[year].[year].&[" + @Year + "]" , CONSTRAINED) 

在ROWS上的交叉連接?

AllMembers與成員;這裏是一個doc;所有成員包括calc。成員;你有任何昂貴的計算。成員?

你有多少人在[Dim DATE]。[MOIS NOM]。[MOIS NOM] .AllMembers? trimestre,semestre?

+0

謝謝! 50年,每次2塞班,每年4次,每年12個月 –