SSAS比较了不同年份同月的2个YTD值

时间:2017-04-12 08:47:49

标签: excel ssas mdx

我正在开发SSAS中的多维数据集,我需要能够比较当前年份和去年之间的YTD值。

我有以下情况:

  • 按年度划分的预算类型: budget1-2016 budget2-2016 budget1-2017 budget2-2017
  • 预算类型应放在
  • 列中
  • 单位:应放在行
  • 该措施被称为“比林斯”

我需要比较特定月份预算“预算1 - 2016”和“预算2-2017”(不同预算类型和年份)之间的“比林斯”的年初至今价值。

当行或列中包含日历月时,一切正常,Expected Result

但是如果它包含在过滤器中并且我选择了例如2016年2月和2017年2月,则结果不符合预期。

enter image description here enter image description here

使用TAIL功能时,仅考虑较高的月份,并删除2016年的列。

有没有办法将日历月放入过滤器,从不同年份选择同一个月,并能够看到他们的年初至今价值?

1 个答案:

答案 0 :(得分:0)

问题是您在过滤器中放了两个成员。 CurrentMember 不适用于两个元组。因此 [数据日期]。[日历] .CurrentMember [数据日期]。[日历] .DefaultMember [数据日期]。[日历]。[所有即可。它运行以下代码:

Sum(
    PeriodsToDate(
        [Data Date].[Calendar].[Calendar Year],
        [Data Date].[Calendar].[All]
    ),
    [Measures].[_Billings]
) 

您选择的是不同年份的两个月,因此您不清楚要从 PeriodsToDate()函数返回什么。自2016年1月或2017年1月以来的数据?选择其中一个成员将解决您的问题,并明确说明。

我不保证这是完美的代码,但它也可能具有魔力,添加另一个计算成员来累计几个月:

Sum(
    existing [Data Date].[Month].[Month].Members,
    [Measures].[Billings]
)