1

複数レベルのマネージャー階層と、時間ディメンションで完了した作業単位を含むキューブがあります。これが私が扱っているデータであると仮定しましょう:

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 テーブルのセットアップになります。

誰かが手を貸してくれたり、私を正しい方向に向けることができますか? ありがとう!

4

2 に答える 2