0

私はMDXを初めて使用し、合計から値を除外することに関して問題があります。

正規化の計算を実行します。具体的には、量(q)を基底(b)で割って、強度(I)を取得します。式はかなり単純ですI=q/b。

私たちのキューブ構造:

ファクトテーブルFactQuantityとFactBasisがあり、それぞれがDimOrgおよびDimTimeディメンションテーブルに関連付けられています。どちらのディメンションにも階層があります。DimTimeでは月が年にロールアップされ、ロケーションはDimOrgでビジネスユニットとグループにロールアップされます。

ファクトテーブルは互いに同期していません。特定のorg_idと時間に数量が存在するという理由だけで、同じorg_idと時間に基礎が存在することは保証されません。

解決策の私の試み:

計算されたメンバーの基本的な形式は簡単です:[メジャー]。[数量]/[メジャー]。[基礎]

これは、両方のディメンションの最低レベルで表示する場合は正常に機能しますが、ディメンションをロールアップして集計を開始すると問題が発生します。

問題は、対応する基準値が同時に場所にない数量値が含まれているため、分子が大きくなりすぎて正しくないことです。

簡単な例:

グループAのorg_id001の基底は100で、数量は1000であるため、計算された強度は1000/100=10です。これまでのところ良い。グループAのorg_id002にも根拠はありませんが、数量は2000であるため、計算された強度はエラーになります。罰金。

グループAにロールアップすると、数量(3000)と基準(100)が合計され、計算された強度は30になりますが、これはグループにとっては正しくありません。2000は、同じorg_idと時間に対応する基準値がなかったため、除外する必要がありました。

あなたが提供できるどんな助けも大いに感謝されます。

ありがとう、

4

1 に答える 1

2

Deepak Puriは、MSDNフォーラムでこれに回答しました。

[DimOrg]。[Location]と[DimTime]。[Month]が2つのディメンションのリーフレベルの属性であるとすると、次のように、これらの葉のみの[Measures]。[Quantity]分子を合計できます。

Sum(NonEmpty(existing [DimOrg].[Location].[Location].Members * [DimTime].[Month].[Month].Members, [Measures].[Basis]), [Measures].[Quantity]) / [Measures].[Basis]

于 2010-04-22T15:12:28.880 に答える