Ssas 最后一个完整的月份

Ssas 最后一个完整的月份,ssas,mdx,Ssas,Mdx,下面返回了我们的一组月份中的最后一个成员: TAIL([Date].[Date - Calendar Month].[Calendar Month],1) 我们的多维数据集包含截至昨天(包括昨天)的数据,因此,如果今天运行上述内容,它将返回成员[2013年7月] 我想要上一个月完成的,因此如果今天(7月4日)运行,它应该返回[2013年6月] 不确定这是否会增加一些额外的复杂性,但如果表达式在一个月的第一个月运行,则层次结构中的最后一个成员实际上将等于最后一个完整的月份 因此,最后一个完成的月

下面返回了我们的一组月份中的最后一个成员:

TAIL([Date].[Date - Calendar Month].[Calendar Month],1)
我们的多维数据集包含截至昨天(包括昨天)的数据,因此,如果今天运行上述内容,它将返回成员
[2013年7月]

我想要上一个月完成的,因此如果今天(7月4日)运行,它应该返回
[2013年6月]

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

因此,最后一个完成的月份有时是层次结构中的最后一个成员,有时是下一个但也是最后一个成员
[日历月]


有没有一种简单易懂的方法来编码这个表达式?

您可以很容易地确定“now”是否是一个月的第一天,如下所示:

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]层次结构,但使用lastChild和lastChild.prevMember可能会更有效

[编辑]Tail(…)(n)检索Tail返回的集合的第n个元素-这是项(n)的快捷方式


[编辑]假设月份层次结构在all成员:[Calendar month].[all]下是扁平的。lastChild将与Tail()和lastChild.prevMember执行相同的操作,以获得最后一个成员之前的一个成员。

+1谢谢-值得思考-我现在需要处理此代码……您能给出一个实现示例吗“也许使用lastChild和lastChild.prevMember会更有效率。”…很棒的东西Marc-我从这个简短的回答中学到了很多。它与
SQL
如此不同,以至于我不得不忽略所有的诱惑,将
MDX
作为一种全新的语言进行比较和学习:你也许能够回答Marc