我有一个要求,即我要使用查询构建器在SSRS数据集中从多维数据集中提取数据,并在一系列日期中使用结果集中的时间维度。条件是
我的MDX如下。
我有一个计算量度,范围定义如下。
SCOPE([MEASURES].[Measure1]);
SCOPE([Date].[Date].MEMBERS);
THIS = TAIL(EXISTING ([Date].[Date].MEMBERS),1).ITEM(0) ;
END SCOPE;
END SCOPE;
以上范围说明完美无缺。但是,当我选择多一个日期成员时,此查询会减慢WAYYYYYYY。性能数字
如果我删除范围声明,这种性能的急剧下降就会消失,这使得我应该有更好的方法来做同样的事情。最终报告查询如下。
SELECT
NON EMPTY
{[Measures].[Measure1]} ON COLUMNS
,NON EMPTY
{ [Dimension1].[Dimension1].[Dimension1].ALLMEMBERS*
[Dimension2].[Dimension2].[Dimension2].ALLMEMBERS*
[Dimension3].[Dimension3].[Dimension3].ALLMEMBERS*
[Date].[Date].[Date].ALLMEMBERS
} ON ROWS
FROM (
SELECT {[Date].[Date].&[2014-06-13T00:00:00]
,[Date].[Date].&[2014-06-16T00:00:00] } ON COLUMNS
FROM [Cube]
)
所以问题是, 有没有办法做范围语句的最后一个可用值部分,以便获得更好的性能?另外,如果有另一种方法来编写有助于提高性能的最终mdx?。
如果对此问题有任何疑问,请告诉我。
由于 SRIKANTH
答案 0 :(得分:1)
第一个优化步骤是将您的查询更改为
SELECT
NON EMPTY
{[Measures].[Measure1]} ON COLUMNS
,NON EMPTY
{ [Dimension1].[Dimension1].[Dimension1].ALLMEMBERS*
[Dimension2].[Dimension2].[Dimension2].ALLMEMBERS*
[Dimension3].[Dimension3].[Dimension3].ALLMEMBERS*
{[Date].[Date].&[2014-06-13T00:00:00], [Date].[Date].&[2014-06-16T00:00:00] }
} ON ROWS
FROM [Cube]
此外,我不确定您为什么添加了SCOPE([Date].[Date].MEMEBER);
(实际上可能是Date].[Date].MEMBERS
)。也许有助于省略它和相应的END SCOPE
。