首页 > 解决方案 > MDX - 检索上一年的最后一个月的值

问题描述

我的日期层次结构为 Year->Qtr->Month->Day

我正在尝试检索前一年最后一个月(即 2020 年 12 月)的价值。基本上,2021 年的所有月份都将与 2020 年 12 月的价值进行比较。

以下内容正是我所需要的,但我不想明确输入 2021 年的成员。我想使用用户正在查看的任何年份。我已经尝试过没有运气的 currentmember,因为我什么也没得到。

SSAS 计算:

sum(ClosingPeriod ([Calendar].[Time].[Month],[Calendar].[Time].[Year].&[2021].lag(1)),
[Measures].[Compliance Pct])

试过这个没有运气:

sum(ClosingPeriod ([Calendar].[Time].[Month],[Calendar].[Time].[Year].currentmemeber.lag(1)),
[Measures].[Compliance Pct])

标签: ssasmdx

解决方案


[Calendar].[Time].[Year]看起来像一个级别,而不是一个层次结构。并且在 MDX 中有一个CurrentMember层次结构,而不是每个级别。为了获得与当前成员的级别无关的当前年份成员[Calendar].[Time],您可以使用

Ancestor( 
     [Calendar].[Time].CurrentMember,
     [Calendar].[Time].[Year]
).lag(1)

代替

[Calendar].[Time].[Year].currentmemeber.lag(1)

Ancestor(...)表达式采用当前成员级别或更高级别的年份级别成员,请参阅的文档Ancestor。如果层次结构的当前成员是该成员,则它将不起作用All,因为这将在年份之上的级别上,而不是低于或在级别上。但是你的计算无论如何都没有意义。

而且,顺便说一句,它是currentmember,不是currentmemeber


推荐阅读