MDX交叉连接,具有5个维度

时间:2012-05-31 07:59:30

标签: ssas mdx cube cross-join

假设我们有以下维度

  • DATE
  • 承包商
  • 颜色
  • 尺寸

以及一套6项措施,我们希望获得给定年份的每个Semestrer,Trimester,Month,Contractor,Color和Size的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之间有什么区别?

1 个答案:

答案 0 :(得分:1)

根据层次结构中的实际年数,您可以使用交叉连接创建一个非常大的集合。正如评论中提到的icCube,为什么不使用:

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

在ROWS的交叉连接中?

AllMembers vs Members;这是一个doc;所有成员都包括计算。成员;你有任何昂贵的计算方法吗?成员?

[昏暗日期]你有多少成员。[MOI NOM]。[MOIS NOM] .AllMembers? trimestre,semestre?