获取符合条件mdx的下一个成员

时间:2014-04-24 12:15:26

标签: ssas mdx

我正在尝试从时间维度上的当前成员返回两个句点,但我只需要包含符合特定条件的句点(Is_Business_Day = true)

我目前有:

(
    [Date].[Calendar].CURRENTMEMBER.NEXTMEMBER.NEXTMEMBER, 
    [Measures].[SOME MEASURE]
)

在未来准确地返回度量两个成员的值,但现在我需要另外应用过滤器,但不能完全弄清楚如何这样做。

修改

我的想法是我必须做类似以下的事情

(
    Head(
        exists(
            [Date].[Calendar].CurrentMember.NextMember:[Date].[Calendar].CurrentMember.Lead(6),
            [Date].[Is Business Day].&[True]
        ),
        2
    ).item(1),
    [Measures].[SOME MEASURE]
)

1 个答案:

答案 0 :(得分:1)

由于这两个层次结构[Date].[Calendar][Date].[Is Business Day]都属于同一维度,因此您可以依赖SSAS“自动存在”,这通常比Exists更快。因此,

((([Date].[Calendar].[Date].&[20050718].nextmember : null )
  *
  { [Date]..Item(0) }
 ).Item(0)
 ,[Measures].[SOME MEASURE]
)

: null构造将一个集合构建到Date级别的末尾,i。即到属性中包含的最后一天。

[Date].[Is Business Day].&[True]的交叉加入会自动将集合限制为维度中共存的成员(自动存在的魔力)。

.Item(0)提取第一个元组。如果您需要的元组不是日期,.Item(0)和度量成员,而只是上下文中的日期和度量,请在第一个之后应用另一个Item(0)。这将从元组中提取第一个成员。