2

我在我的多维数据集中创建了一个计算成员来计算 12 个月滚动期的事件计数。我有一个名为Event Count我已经使用该LastPeriods函数来执行此操作的度量。但是,当我有一个月没有任何数据时,我遇到了问题,我的 Measure [Event Count] 显示为 null,而我的计算成员也显示为 null - 我真的需要 12 个月的滚动计数才能继续,替换计数中的 0 为 Null,因此如果我得到 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])

有没有人遇到过这个问题或者可以看到我哪里出错了

4

1 回答 1

0

首先,您在表达式中明确声明如果当前期间没有事件计数,则结果应该为零而不是事件计数,然后您求和0而不是事件计数度量。因此,公式应该是

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

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

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
)

请注意,冒号运算符创建了一个从左操作数开始到右操作数结束的成员范围。

于 2013-09-17T12:34:59.883 回答