2

キューブに計算メンバーを作成して、12 か月のローリング期間のイベント数を計算しました。これを行うために関数をEvent Count使用したというメジャーがあります。LastPeriodsただし、データがない月があり、メジャー [イベント数] が null を表示し、計算されたメンバーも null を表示している場合、問題が発生しています。続行するには、12 か月のローリング カウントが必要です。カウントが 0 の場合は Null なので、0 を取得した場合はその月の値を取得します。

したがって、1 月のイベント数が 5 で 2 月の場合Null、過去 11 か月分のデータをすべて追加する必要があるため、ローリング カウントは 5 のままです。

次の MDX を計算メンバーとして使用していますが、まだ null が返されます。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の期間階層のレベルに関係なく 1 年さかのぼり、そこからメンバーを 1 つ進めて合計の開始期間を取得することをお勧めします。つまり、次の式を使用します。

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 に答える