複数レベルのマネージャー階層と、時間ディメンションで完了した作業単位を含むキューブがあります。これが私が扱っているデータであると仮定しましょう:
http://i.stack.imgur.com/eNP4L.png
私が MDX を介してやろうとしているのは、特定のレベル (レベル 1、John Smith) に焦点を当て、階層から個人 (エンド ユーザーとマネージャーの両方) を削除し、値を適切にロールアップすることです。
http://i.stack.imgur.com/xW5CF.png
上の画像からわかるように、リサ ライスとモーガン リチャードソンのチーム全体を削除しました。予想される結果は、Full Name と Work Units の 2 つの列になります。
これまでにまとめたクエリは次のようになります。
WITH SET [MyCustomSet] AS EXCEPT(
DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER),
{DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)}
)
MEMBER [Measures].[MyMeasure] AS Aggregate([MyCustomSet], [Measures].[#Work Units])
SELECT {
[Measures].[MyMeasure]
} ON COLUMNS,
NON EMPTY {
[MyCustomSet]
} ON ROWS
FROM [MyCube]
しかし、これは必要なメンバーのリストを返しますが、すべてのメンバーの集計値はすべてのメンバーの合計です。計算されたメジャーを削除して値を使用すると[Measures].[#Work Units]
、メンバーが削除されていないロールアップの合計値が表されますが、メンバーは列に存在しません。
このデータの最終的なホームは、階層を正しく表示するための再帰的な親関係を持つ SSRS テーブルのセットアップになります。
誰かが手を貸してくれたり、私を正しい方向に向けることができますか? ありがとう!