web-dev-qa-db-ja.com

SSASモデリング-1次元の多対多

OLAPキューブのモデリングに少し苦労しています。

私の例えはこれです:私は学生のリストを持っています。それぞれに1つの主要な研究対象があり、0人以上の未成年者が合計5人までいます。

生データは次のようになります。

Student ID    | Major   | Minor 1    | Minor 2 | Minor 3 | Minor 4 | Minor 5
-----------------------------------------------------------------------------
12345           English   French       Null      Null      Null      Null
23456           French    Engineering  Null      Null      Null      Null
34567           Math      French       Biology   Physics   Null      Null
45678           Physics   Null         Null      Null      Null      Null
56789           French    Math         Physics   Chemistry Null      Null
67890           Math      French       English   Biology   Null      Null

ご覧のとおり、科目はすべて一般的です。一部の学生にとっては、一部は専攻であり、その他は未成年です(未成年者がいる場合)。これは、dimSujectディメンションがあることを意味します。

私はこれを次のようにマッピングできます:

factStudent-> dimSubject

学生の数であるメジャーをドロップして、各専攻の学生数を含む専攻のリストを表示できるようにします。

私がやりたいのは、dimMinorをドロップできるようにすることです。これにより、メジャーが各マイナーのカウントにドリルダウンされます。 dimSubjectは、メジャーかマイナーかに関係なく、取得されているすべてのサブジェクトの一意の参照です。学生への参照と主題への参照を格納するための中間のfactMinorテーブルを検討しましたが、これは粒度を維持しますか?また、中間ファクトをドリルダウンのディメンションとして使用する方法もわかりませんでした。

1
James Love

ファクトテーブルを次の形式に正規化します。

StudentId Level    Subject
34567     Major    Math  
34567     Minor 1  French
34567     Minor 2  Biology
etc.

レベルをディメンションとして追加します。

2
Thomas