2013-02-12 105 views
0

我有一个与Microsoft Technologies有关的多维数据集问题,我们有一个基于BIDS 2008版本构建的SSAS Cube,要求将前(12)个月的测量数量进行分组排除一个维度中的某些值。MDX,用olap cube计算的成员

我想出了立方体内的计算如下:

CREATE MEMBER CURRENTCUBE.[Measures].[N-12] 
AS Sum 
    (
     (
     Except 
     (
      [Dim Sistema Corporativo].[Sistema Corporativo].[Id Sistema] 
     ,{ 
      [Dim Sistema Corporativo].[Sistema Corporativo].[Id Sistema].&[3] 
      ,[Dim Sistema Corporativo].[Sistema Corporativo].[Id Sistema].&[4] 
      } 
     ) 
     ,lastperiods(12, 
      [Dim Tiempo].[Fecha].CURRENTMEMBER 
     ) 
    ) 
    , 
     [Measures].[importe] 

    )/*Lime*/, 
VISIBLE = 1 ; 

我得到的是这样的:

Row  Importe  N-12 
2011 12399121166 12399121166 
01.2011 1040785565 1040785565 
02.2011 1069453202 2110238768 
03.2011 1359303502 3469542269 
04.2011 1068266294 4537808563 
05.2011 1163538168 5701346731 
06.2011 1146393010 6847739741 
07.2011 936369144.8 7784108886 
08.2011 1000363518 8784472404 
09.2011 859885351.7 9644357755 
10.2011 779035206.2 10423392962 
11.2011 933409920.9 11356802882 
12.2011 1042318283 12399121166 
2012 25162093544 22225879797 
01.2012 -40878580.57 11317457020 
02.2012 678706164.3 10926709982 
03.2012 16323643149 10555714716 
04.2012 947692878 10435141301 
05.2012 1057496411 10329099544 
06.2012 1103249990 10285956525 
07.2012 976810086.3 10326397466 
08.2012 1046738046 10372771994 
09.2012 1027644991 10540531634 
10.2012 1108157924 10869654352 
11.2012 932832484 10869076915 
12.2012    9826758631 
2013    22225879797 
2014    22225879797 
2015    22225879797 
2016    22225879797 
2017    22225879797 
2018    22225879797 
2019    22225879797 
2020    22225879797 
2021    22225879797 
2022    22225879797 
2023    9826758631 

正如你可以看到它是做正确的事altough用户要求我做一些调整:

第一个问题是,如果没有数据(标识为“importe”度量值组),则多维数据集不会显示任何内容,并且您可以看到它显示空白区域(直到2023年),当时没有默认度量组的数据。

第二个是,用户只希望看到数据当且仅当当前成员有12个前几个月因此,例如,现在显示2011年的信息,但正如用户所说,它应该只显示数据为2012年,因为所有这些月份都有12个月的前期和2011年没有2010年的数据,所以对于这个数据我应该有一个空值。

是否有可能这样做...?

或者您可以建议任何其他选项,如直接影响事实表等。

谢谢你的建议球员。

回答

0

要检查当前的成员有12个前一个月,你可以使用表达式像这样的:

IIf(Count(
      NonEmpty(lastperiods(12, [Dim Tiempo].[Fecha].CURRENTMEMBER), 
        [Measures].[importe]) 
     ) = 12, 
    ..., 
    ...) 
+0

非常感谢AMIGO,我修改了MDX计算和完成它,感谢主对你有所帮助。 – 2013-02-13 16:04:38