欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

一个mdx查询,请好手

更新时间: 2014-01-05 02:29:04 责任编辑: Author_N1

 

一个MDX查询,请高手!
有下面几个表和维度:
有[企业]表,包含所有企业,大约有4万多条记录,里面有字段:“企业代码”、“企业名称”,通过该表建立[企业]维度;
有[亏损集团]表,表示一个年度哪些集团(包含多个企业)亏损,一年大约有400条记录,有字段:“年度”、“集团名称”、“流水ID号”,通过该表建立[集团]维度;
以上两表是多对多关系,通过中间表[集团明细]表关联,该表有字段:“集团流水ID号”、“企业代码”,通过该表建立中间度量值组,实现维度间多对多关系。
另有事实数据表,有字段:“年”、“月”、“企业代码”、“金额”,有计算成员“[Measures].[金额]”
另有[时间]维度,年-月

以上多对多关系,在SA中实现,现在查询这些集团及下属公司的金额,查询速度很慢!
MDX如下:



WITH 
  
  /*MEMBER [Measures].[本期金额] AS 'round(( [Measures].[金额],[m时间].[年-月].CurrentMember)/10000,2)'*/
 
  MEMBER [本期金额] AS '[Measures].[金额]' 

  MEMBER [上期金额] AS 'round(( [Measures].[金额],
      ParallelPeriod(
                      [m时间].[年-月].[年],
                      1,
                      [m时间].[年-月].CurrentMember
      )
    )/10000,2)' 


SELECT 
   NON EMPTY {[本期金额]} ON COLUMNS,   /*这样写,需要1分钟查完,如果再复杂点,就"遥遥无期"了...*/
   /* NON EMPTY {[Measures].[金额]} ON COLUMNS, */  /*这样写,只需2秒钟查完*/

   NON EMPTY { ([集团].[集团名称].[集团名称].ALLMEMBERS * [企业].[企业名称].[企业名称].ALLMEMBERS ) }  ON ROWS  
 from [cube_Data]

上面这样写法,查询可能需要1分钟,如果把“NON EMPTY {[本期金额]} ON COLUMNS,”改成“NON EMPTY {[Measures].[金额]} ON COLUMNS,”,则2秒就可以出结果。

请高手看看。

--参考方法--
恭喜
--参考方法--
恭喜
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:29:04
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10348/
本文WWW.DOC100.NET DOC100.NET版权所有。