上个完整月份

时间:2013-07-04 12:07:28

标签: ssas mdx

以下内容返回我们的月份中的最后一个成员:

TAIL([Date].[Date - Calendar Month].[Calendar Month],1)

我们的多维数据集包含昨天(包括昨天)的数据 - 因此,如果今天运行上述数据,则会返回成员[July 2013]

我想要上次完成的月份,所以如果今天(7月4日)运行,它应该返回[June 2013]

不确定这是否会增加一些额外的复杂性,但如果表达式在一个月的第一天运行,那么层次结构中的最后一个成员实际上将等于上一个完整月。

所以有时候最后一个完成的月份是最后一个成员,有时它是下一个但是最后一个成员,在层次结构中[Calendar Month]

这种表达式是否有一种简单的编码方式?

1 个答案:

答案 0 :(得分:3)

如果“现在”是月份的第一天,您可以轻松确定如下:

IIF( Day(Now()) = 1, ... , ... )

所以你可以创建一个计算成员:

with member [Last Completed Month] as
    IIF( Day(Now()) = 1,
         TAIL([Date].[Date - Calendar Month].[Calendar Month],1)(0),
         TAIL([Date].[Date - Calendar Month].[Calendar Month],2)(0)
    )

关于[Calendar Month]层次结构的dunno,但是使用lastChild和lastChild.prevMember会更有效......

[edit] Tail(...)(n)检索Tail返回的集合的第n个元素 - 这是item(n)的快捷方式

[edit]想象月份层次结构在所有成员下是平的:[日历月]。[全部] .lastChild将与Tail()和lastChild.prevMember相同以获得最后一个。