MDX错误的月份总和

时间:2017-02-06 14:04:13

标签: ssas mdx

我需要用立方体中的值计算过去7天的计数。

我写下一个MDX表达式:

Count
(
  Filter
  (
    Descendants
    (
        [Date].[Date Hierarchy].CurrentMember.Lag(6)
      : 
        [Date].[Date Hierarchy].CurrentMember
    )
   ,[Measures].[Amount]
  )
)

数据在日级别的层次结构中是正确的,但在月级,其他级别衡量的是过去7个月的值。

UPDATE 我想显示一个月的最后一天的价值

例如:
日期| value1 |值2
2017-01-01 | 5 | 4
2017-01-02 | 4 | 3
2017-01-03 | 3 | 2
.....
2017-01-31 | 7 | 1< ---月级别我不会显示这个

2 个答案:

答案 0 :(得分:0)

您可以在lastchild的帮助下获得该月的最后七天。它将帮助您获得本月的最后一天。因此,对于月份级别,您可以使用:

Count (
    Filter ( 

            {[Date].[Date Hierarchy].CurrentMember.lastchild.Lag(6) :
            [Date].[Date Hierarchy].CurrentMember.lastchild}
         ,[Measures].[Amount]
    )
)

此处使用DESCENDANTS不合适,因为它返回包含该层次结构的所有子成员的集合。

答案 1 :(得分:0)

未经测试但可能类似以下内容

COUNT(
  //to find the members with values use nonempty
  NONEMPTY( 
    //find the last date in a set
    TAIL(  
      EXISTS(  //find the dates associated to the currentmember 
        [Date].[Date Hierarchy].CurrentMember
       ,[Date].[Date Hierarchy].[Date Hierarchy].MEMBERS
      )
    ).ITEM(0).LAG(6)
    :
    TAIL(  //find the last date
      EXISTS(  //find the dates associated to the currentmember 
        [Date].[Date Hierarchy].CurrentMember
       ,[Date].[Date Hierarchy].[Date Hierarchy].MEMBERS
      )
    ).ITEM(0)
    , [Measures].[Amount]  
  )
)

我对Adventure Works多维数据集进行了测试。

如果选择月份,则为

WITH 
  MEMBER [Measures].[X] AS 
    Count
    (
      NonEmpty
      (
          Tail
          (
            Exists
            (
              [Date].[Calendar].[Date].MEMBERS
             ,[Date].[Calendar].CurrentMember
            )
          ).Item(0).Lag(6)
        : 
          Tail
          (
            Exists
            (
              [Date].[Calendar].[Date].MEMBERS
             ,[Date].[Calendar].CurrentMember
            )
          ).Item(0)
       ,[Measures].[Internet Sales Amount]
      )
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Internet Sales Amount]
     ,[Measures].[X]
    } ON 0
 ,NON EMPTY 
      [Date].[Calendar].[Month].&[2007]&[7]
    : 
      [Date].[Calendar].[Month].&[2008]&[6] ON 1
FROM [Adventure Works];

按预期返回7:

enter image description here

如果我在轴1上更改为每日:

WITH 
  MEMBER [Measures].[X] AS 
    Count
    (
      NonEmpty
      (
          Tail
          (
            Exists
            (
              [Date].[Calendar].[Date].MEMBERS
             ,[Date].[Calendar].CurrentMember
            )
          ).Item(0).Lag(6)
        : 
          Tail
          (
            Exists
            (
              [Date].[Calendar].[Date].MEMBERS
             ,[Date].[Calendar].CurrentMember
            )
          ).Item(0)
       ,[Measures].[Internet Sales Amount]
      )
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Internet Sales Amount]
     ,[Measures].[X]
    } ON 0
 ,NON EMPTY 
      [Date].[Calendar].[Date].&[20070701]
    : 
      [Date].[Calendar].[Date].&[20080630] ON 1
FROM [Adventure Works];

enter image description here