MDX,使用olap cube计算成员

时间:2013-02-12 23:58:34

标签: mdx olap-cube cubes

我有一个与Microsoft Technologies的多维数据集相关的问题,我们有一个基于BIDS 2008版本的SSAS多维数据集,并且要求将前一个十二个月的度量数量分组(总和)并排除一个维度中的某些值。

我在立方体内部进行了如下计算:

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

正如你所看到的那样,尽管用户要我做一些调整,但它做的是正确的事情:

首先,如果没有数据(标识为“importe”度量组),则多维数据集不会显示任何内容,并且您可以看到它显示未来几年(直到2023年)的空白,此时没有数据默认度量组。

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

是否可以这样做...... ???

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

谢谢你的建议。

1 个答案:

答案 0 :(得分:0)

要检查当前成员上个月是否有12个,您可以使用如下表达式:

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