1

メンバーのリスト、メンバーのID、およびメジャー値を含む結果を返すMDXクエリを作成しようとしています。この例では、調査からの評価値であるファクトテーブルがあります。各評価値には、Id列とName列を持つQuestionディメンションへの外部キーがあります。必要な情報は、各質問のIDと名前と平均評価の合計です。これまでのところ、IDと評価、または名前と評価を取得できますが、両方を取得する方法がわかりません。

これが私が試したクエリです:

SELECT
NON EMPTY {[Measures].[Rating]} ON COLUMNS,
NON EMPTY {[Question].[Question Id].Members, 
           [Question].[Question Caption].Members} ON ROWS
FROM [Ratings]

そして、私が重複した値を取得することを除いて、それはほとんど機能します、ここにサンプル結果があります:

[Question].[10]                             3.5
[Question].[11]                             4.2
[Question].[12]                             4.9
[Question].[13]                             4.0
[Question].[10].[blar abc]                  3.5
[Question].[11].[blar def]                  4.2
[Question].[12].[blarrr]                    4.9
[Question].[13].[something else]            4.2

質問10は、3.5の評価で2回表示され、1回は名前なし、もう1回は名前付きで表示されます。

MDXでやりたいことはありますか?私は何が欠けていますか?これはモンドリアンによって実行されています。

4

1 に答える 1

1

これは、質問ディメンションの階層がどのように設定されているかによって異なります。ここでは、階層が

All Questions
    > Id 
        > Name

(キャプションは特定の質問メンバーのプロパティであり、レベルではないため、これはおそらくこの階層を設定するための最良の方法ではありませんが、私は逸脱します)。

間違っているのは、両方のレベル(IdとCaption)のすべてのメンバーを含むセットを作成しているということです。通常、上位レベルのメンバー([Question]。[13]など)はメジャー値をロールアップしますが、各IDにはキャプションが1つしかないため、平均評価は両方のレベルで同じです。

1つの解決策は、Idレベルを使用せず、CaptionメンバーのUniqueNameからIDを抽出することです。

SELECT
NON EMPTY {[Measures].[Rating]} ON COLUMNS,
NON EMPTY {[Question].[Question Caption].Members} ON ROWS
FROM [Ratings]

結果のセルとしてIDが本当に必要な場合は、代わりに計算メンバーを使用してその値を保持することもできます。

WITH MEMBER [Measures].[QuestionId] AS Iif(
        Not IsEmpty([Measures].[Rating]), 
        [Question].CurrentMember.Parent.Name, 
        NULL
    )
SELECT
NON EMPTY {[Measures].[QuestionId], [Measures].[Rating]} ON COLUMNS,
NON EMPTY {[Question].[Question Caption].Members} ON ROWS
FROM [Ratings]

Iif関数は、評価がない場合にNULLメンバーがあることを確認します。そうでない場合は、質問に関係なくすべての質問の行を取得します。


編集:1レベルの階層を使用できますAll Questions > Question(他に分析的に役立つ質問の分類がある場合は、その間に他のレベルを追加できます)。

質問レベルは1つの質問インスタンスを表すため、次のことができます。

  1. このレベルの「一意の識別子」(columnスキーマの値によって指定されるメンバーキー)を質問IDにします。
  2. 'ユーザーID'(nameColumnスキーマの値で指定)を質問キャプションにします。
  3. 階層内で意味をなさない他の便利なプロパティをこのレベルに追加できます(スキーマのPropertyタグを使用)。

次に、キャプションで質問を[Question].[the caption here]選択し、IDで質問を選択できます[Question].&[Id here]。プロパティを取得する場合は、次のように実行できます。

SELECT
NON EMPTY {[Measures].[Rating]} ON COLUMNS,
NON EMPTY {[Question].[Question].Members} 
    DIMENSION PROPERTIES [Question].Key, [Question].[other property name] ON ROWS
FROM [Ratings]

プロパティは、結果のCellSetにメタデータとして追加されます。

于 2013-01-10T00:01:50.283 に答える