1

SQL には精通していますが、MDX は初めてなので、次のことを理解するのに苦労しています。

毎月の口座残高のスナップショットを含むファクト テーブルがあります。残高を半加法的尺度としてロールアップする必要があります。明らかに、残高に対して単純な合計は機能しません。ただし、すべてのアカウントの残高を合計して、各月内のすべての残高を個別に合計する必要があるため、「lastnonempty」の概念も機能しません。例、事実が次のように見える場合:

Date        AccountNo     Balance
2009-01-31  1111          $100
2009-01-31  2222          $100
2009-01-31  4444          $100
2009-01-31  5555          $100

2009-02-28  1111          $100
2009-02-28  2222          $200
2009-02-28  3333          $500
2009-02-28  5555          $50

etc.

また、アカウントをメジャー カテゴリ/マイナー カテゴリ/アカウント階層にグループ化するアカウント ディメンションがあります。すべてのアカウントの各月の残高を合計する次のような出力が必要です。

Month        Total
January 09   $400
February 09  $850

また、アカウントの種類ごとに分類すると、次のようになります。

Month        Total
January 09   $400
  Type 1      $200
    1111       $100
    2222       $100
  Type 2     $200
February 09  $850
  Type 1     $300
  Type 2     $550

ただし、残高は月、四半期、または年にまたがって合計するべきではありません。意味がなく、2 回カウントされるからです。時間間隔が長くなると、期間の終わりが表示されます。

Quarter    WRONG    Correct
Q1         $1250    $850   // should be the sum of balances for the *last* month in Q1
  Type 1   $500     $300
  Type 2   $759     $550

株式の「lastnonempty」集計を使用すると、先月の口座残高の合計ではなく、1 か月の文字通り最後の口座行のみが取得されるようです。あたかもその月の合計が、合計ではなく、その月に存在する 1 つのランダムな口座から取られた残高を示しているかのようです。(私はそれが本当にランダムではないことを確信しています、おそらく保管順序または何かに基づいて1つを選んでいます)

私は単純で間違ったことをしているだけだと確信しています...

4

1 に答える 1

0

私はこれを解決したと思います.残高を持つソースデータは非常にまばらでした-ゼロ以外の残高の行のみがあり、残高がゼロの場合はアカウントの行はありませんでした. それはすべてを厄介なものにしました(部品の数があり、それらの数が多くの場合ゼロである在庫を想像してください。しかし、それらが0の場合、行はファクトテーブルから欠落しています)

すべての追加行をゼロ残高で「再度追加」するビューをデータ ソースに作成することができ、その後 ClosingPeriod() 関数が期待どおりに機能し始めました。

于 2009-12-01T17:59:14.683 に答える