滚动计数Null值的MDX LastPeriods

时间:2013-09-16 15:41:52

标签: mdx ssas-2012

我在我的多维数据集中创建了一个计算成员,以计算12个月滚动期的事件计数。我有一个名为Event Count的度量我已使用LastPeriods函数执行此操作。但是,当我有一个没有任何数据的月份时,我遇到了问题,我的Measure [Event Count]显示为null,我的计算成员也显示为null - 我真的需要12个月的滚动计数才能继续,取代在计数中为0为空,因此如果我得到0,我将获得该月的值。

因此,如果jan事件计数为5且2月为Null,我仍应将之前11个月的所有数据加在一起,因此滚动计数仍为5

我有以下MDX作为我的计算成员,我仍然得到空值。我也试过做一个CASE声明。

IIF (isEmpty([Measures].[Event Count]) , 
Sum(LastPeriods(12,[Event Date].[CalendarYQMD].CurrentMember),0),
Sum(LastPeriods(12,[Event Date].[CalendarYQMD].CurrentMember),[Measures].[Event Count])

之前有人遇到过这个问题,或者可以看到我出错的地方

1 个答案:

答案 0 :(得分:0)

首先,您在表达式中明确声明结果应为零,如果当前句点没有事件计数,则不是事件计数,因为您将0与事件计数度量相加。因此,公式应为

Sum(LastPeriods(12,[Event Date].[CalendarYQMD].CurrentMember),[Measures].[Event Count])

没有IIf(IsEmpty())。 然后,您可以在求和后将值设置为零,方法是将结果嵌套到CoalesceEmpty()中,i。即

CoalesceEmpty(
  Sum(
    LastPeriods(12,[Event Date].[CalendarYQMD].CurrentMember),
    [Measures].[Event Count]
  ),
  0
)

其次,所述公式仅适用于数月。对于宿舍,它将总计12个季度,并且多年将总计12年。我建议不要使用LastPeriods,而是使用ParallelPeriod返回一年,而不依赖于您所处的阶段级别,然后从那里前往一位成员获取开始期总和,我即使用以下公式:

CoalesceEmpty(
  Sum(
    ParallelPeriod(
      [Event Date].[CalendarYQMD].[Year Name],
      1,
      [Event Date].[CalendarYQMD].CurrentMember
    ).NextMember
    :
    [Event Date].[CalendarYQMD].CurrentMember,
    [Measures].[Event Count]
  ),
  0
)

请注意冒号运算符会创建一系列以左操作数开头并以右操作数结尾的成员。