MDX检索年和月的滞后

时间:2016-06-09 09:33:48

标签: mdx

我的等级时间为[年]。[月]

我希望获得几年和几个月的行,回到六个时期,但我也希望展示一年。

所以我可以这样做,使用滞后来查找一组月份,然后是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

我不知道如何避免每年的摘要。

1 个答案:

答案 0 :(得分: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中测试好了:

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