質問
SQLに習熟しているがMDXの初心者であるため、これを回避するのに苦労しています:
毎月の口座残高のスナップショットを含むファクトテーブルがあります。私は半加算的な尺度としてバランスをロールアップする必要があります-明らかに、バランスのためにストレートサムは機能しません。ただし、すべてのアカウントの残高を合計することにより、1か月以内にすべての残高を個別に合計する必要があります。したがって、「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つのランダムアカウントから取得した残高のみを表示しているようです。 (確かにランダムではなく、おそらく保存順序などに基づいて選択していると思います)
単純なこと、間違ったことをしているに違いない...
解決
私はこれを解決したと思います:残高のあるソースデータは非常にまばらでした-残高がゼロ以外の場合のみ行があり、残高がゼロの場合はアカウントの行がありませんでした。そのため、すべてが厄介になりました(在庫として想像してください。部品の数があり、それらの数は多くの場合ゼロですが、0の場合、行はファクトテーブルから欠落しています)
データソースで「アドインを追加」するビューを作成できました。すべての追加行、残高ゼロ、およびその後ClosingPeriod()関数が期待どおりに動作を開始しました。