在有序选择中获取mdx中的成员值

时间:2016-07-25 09:44:00

标签: mdx olap mondrian

我需要使用mdx查询为每个当前成员获取上一个(上方)成员的销售。

以下mdx适用于在普通查询中引入先前的成员值,但是如果我设置按Sales排序行以获得顶部,则前一个值是混合的并且它是dosn&t;按照订购的会员。

WITH
    MEMBER [Measures].[PrevMemberSales] AS 
      'SUM(
         [Markets].[Country].CurrentMember.PREVMEMBER
       , [Measures].[Sales]
       )'
SELECT
    NON EMPTY 
        ({[Measures].[Sales], [Measures].[PrevMemberSales]}) ON COLUMNS,
    NON EMPTY 
        //ORDER(
            {[Markets].[Country].Members}
        //    , [Measures].[Sales], BDESC) 
        ON ROWS
FROM [SteelWheelsSales];

我需要将之前的成员值设置为top,以获得Sales之间的差异。 我正在使用蒙德里安3。 enter image description here

1 个答案:

答案 0 :(得分:0)

我只是通过对计算成员使用以下公式来解决问题:

WITH
    MEMBER [Measures].[PrevMemberSales] AS 
       (Order(
          [Markets].[Country].Members
         ,[Measures].[Sales]
         ,BDESC
        ).Item(
                Rank(
                  [Markets].[Country].CurrentMember
                   ,Order(
                      [Markets].[Country].Members
                     ,[Measures].[Sales]
                     ,BDESC
                   )
                ) - 2
               ).Item(0)
        , [Measures].[Sales]
       )
SELECT
    NON EMPTY ({[Measures].[Sales], [Measures].[PrevMemberSales]}) ON COLUMNS,
    NON EMPTY 
        ORDER(
            {[Markets].[Country].Members}
            , [Measures].[Sales], BDESC) 
        ON ROWS
FROM 
    [SteelWheelsSales]

结果还可以,但我的下一个问题是制作一个计算成员,为所有上述成员带来所有销售额的总和。 例如,对于法国销售,价值应为美国+西班牙销售,对于澳大利亚销售,我需要美国+西班牙+法国销售。

有什么想法吗?