2013-02-12 77 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