2016-06-09 38 views
0

我有[年]的層次結構的時間。[月]MDX檢索一年個月的滯後上月

我想得行幾年或幾個月,回去六個週期,但我也想展示那一年。

所以,我可以這樣做,用lag找到一組月份,然後是Ascendants。

SELECT 
NON EMPTY {[Measures].[modality]} ON COLUMNS, 
NON EMPTY {Hierarchize(Generate({[Time.CalYearMonth1].[2016].[1].lag(6):[Time.CalYearMonth1].[2016].[1]},ASCENDANTS([Time.CalYearMonth1].CurrentMember)))} 
ON ROWS 
FROM [mt_report] 

當我這樣做時,我得到了一年的成員,這基本上是我不想要的行。

在Pentaho的,這給出結果:

Axis #0: 
{} 
Axis #1: 
{[Measures].[modality]} 
Axis #2: 
{[Time.CalYearMonth1].[All Time.CalYearMonth1s]} 
{[Time.CalYearMonth1].[2015]} 
{[Time.CalYearMonth1].[2015].[7]} 
{[Time.CalYearMonth1].[2015].[8]} 
{[Time.CalYearMonth1].[2015].[9]} 
{[Time.CalYearMonth1].[2015].[10]} 
{[Time.CalYearMonth1].[2015].[11]} 
{[Time.CalYearMonth1].[2015].[12]} 
{[Time.CalYearMonth1].[2016]} 
{[Time.CalYearMonth1].[2016].[1]} 
Row #0: 0.95 
Row #1: 1.11 
Row #2: 1.08 
Row #3: 1.14 
Row #4: 1.13 
Row #5: 1.16 
Row #6: 1.15 
Row #7: 1.15 
Row #8: 1.11 
Row #9: 1.17 

我不知道如何避免每年的總結。

回答

0

ASCENDANTS定義似乎表明它會返回上面各級的成員 - 這將包括聽起來像你想避免的所有級別。

你可以嘗試Ancestors得到公正的歲月:

SELECT 
    NON EMPTY 
    {[Measures].[modality]} ON COLUMNS 
,NON EMPTY 
    { 
     Hierarchize 
     (
     { 
      [Time.CalYearMonth1].[2016].[1].Lag(6) : [Time.CalYearMonth1].[2016].[1] 
     ,Generate 
      (
      { 
       [Time.CalYearMonth1].[2016].[1].Lag(6) : [Time.CalYearMonth1].[2016].[1] 
      } 
      ,Ancestors 
      (
       [Time.CalYearMonth1].CurrentMember 
      ,1 //<<<change this to the distnace year is away from month in the levels of the user hierarchy 
      ) 
     ) 
     } 
    ) 
    } ON ROWS 
FROM [mt_report]; 

似乎在AdvWrks測試OK:

SELECT 
    {} ON 0 
,Hierarchize 
    (
    { 
     [Date].[Calendar].[Month].&[2010]&[4].Lag(6) 
     : 
     [Date].[Calendar].[Month].&[2010]&[4] 
    ,Generate 
     (
     { 
      [Date].[Calendar].[Month].&[2010]&[4].Lag(6) 
      : 
      [Date].[Calendar].[Month].&[2010]&[4] 
     } AS S 
     ,Ancestors 
     (
      s.CurrentMember 
     ,3 //<<< distance in advwrks between month and year levels 
     ) 
    ) 
    } 
) ON 1 
FROM [Adventure Works]; 

返回:

enter image description here

+0

我可以使用過濾器不知何故去除集合中具有ALL的元組作爲孩子? –

+0

@TimRichardson你能否多解釋一下 - 我從未遇到任何與ALL有關的事情。我已經在advWrks魔方中測試了我的答案,它工作正常 - 您是否能夠適應您的環境? – whytheq

+0

那些只有一年,沒有月份,顯示整個年度總量的行的行...並不意味着對於那個「行」月份的成員是ALL,也就是說,全年都是? MDX會把我的腦袋放進去。可以將它們去掉嗎? –

相關問題