给定日期范围的第一个非空值

时间:2014-11-19 17:39:04

标签: sql-server ssas mdx olap olap-cube

我想使用以下计算成员获得给定日期范围的第一个非空度量值:

(
 [Measures].[Total],
 Head
  (
   Nonempty
   ( [Date].[Date].members
    ,[Measures].[Total]
   )
  ).Item(0)
)

计算出的成员对多维数据集中的所有日期工作正常,但是当我过滤查询并添加日期范围时,它仍会获得所有日期的最后一个非空度量,而不是仅选定日期。有什么建议可以解决这个问题?

1 个答案:

答案 0 :(得分:2)

尝试强制使用EXISTING

的上下文
(
 [Measures].[Total],
 Head
  (EXISTING
   Nonempty
   ( [Date].[Date].members
    ,[Measures].[Total]
   )
  ).Item(0)
)

此外,我认为您希望使用TAIL来获取数据的最后日期,而不是获取集合中第一个的HEAD

(
 [Measures].[Total],
 Tail
  (EXISTING
   Nonempty
   ( [Date].[Date].members
    ,[Measures].[Total]
   )
  ).Item(0)
)

要继续使用Head,您需要先订购内部设置 - ORDER速度很慢,以便最好避免这种情况:

(
 [Measures].[Total],
 Head
  (EXISTING
     ORDER(
       Nonempty
       ( [Date].[Date].members
        ,[Measures].[Total]
       )
     ,[Date].CURRENTMEMBER.MemberValue
     , BDESC
     )
  ).Item(0)
)