2012-04-30 22 views
5

あなたのためのSSASの質問。 OLAP SSASキューブ環境で1対多の関係を定義しようとしています。しかし、私はプライマリキーの定義に問題が発生しています。表の例は以下のとおりです。最初の3つのテーブルの関係は簡単に定義できます(TradeDate、NYMEX取引& NYMEX契約)。しかし、私の目標はNYMEX契約とモデル契約の間に1対1の関係を作り出すことです。つまり、1 NYMEX契約のデータは、モデル契約データセットで複数回使用されます。SSASと1対多の次元関係

表:TradeDate

  • TradeDate(PK)
  • 月 等...

表:NYMEX取引(NO PK)

  • ContractName
  • TradeDate
  • 価格

表:NYMEX契約

  • ContractName(PK)

表:モデル契約

  • ModelContractName(PK)
  • ContractName

しかし私は、私のPKは、モデル契約で間違った列にある... NYMEX契約とモデル契約の間には多くの関係に1を作成する必要があります。何か案は?

明確にするために - 私は次元 - >次元関係を定義しようとしています。テーブル "モデル契約"はルックアップテーブルです。

+1

この質問を姉妹サイト[dba.stackexchange.com](http:// [tag:ssas]および/または[tag:mdx]でタグ付けされた質問は、そこに回答する可能性がさらに高いかもしれません。 –

+0

あなたはそれにフラグを立てることができます(司会者がそれを転送する)か、そこに投稿してこの質問を自分で削除してください。 –

+0

なぜ階層ではなく1-M関係を作成しようとしていますか?モデル契約のContractNameがNYMEX契約と同じであれば、それは外部キーではないでしょうか? ModelContractNameはModel Contractの中で最も細かい要素であるように見えるので、名前の別のリストが適切な候補キーでなければなりません(整数の代理キーはおそらく良いでしょう)。 – JAQFrost

答えて

6

多対多ファクトデータ(トレード)とディメンションデータ(モデル契約)の関係これを見てください:dimension relationship。モデル契約は1つの契約名にのみ割り当てることができますが、依然として多対多の場合に該当するため、ケースはまれです。これは、ディメンション・モデリングのブリッジ・テーブルを使用して処理され、SSASでは、それを中間のファクト・テーブルと呼びます。あなたはこのようなあなたのDSVセットアップしたら: enter image description here

を次に、あなたのプロジェクトであなたの寸法を作成し、中間ファクトテーブルとしてそれを使用できるようにModelContractのためのメジャーグループを作成します。あなたは、セットアップの多対多の関係を選択するキューブのディメンションの使用方法になります。注意点として

enter image description here enter image description here

を、あなたは常にあなたの寸法については、代理キーを使用する必要があります。彼らはあなたのファクトテーブルの記憶スペース、ゆっくりと変化する次元、ソースシステムのデカップリングなどいくつかの利点を持っています。

+0

代理キーを含むことが可能であれば、 – elgabito

0

ここで2次元を行う必要があります。

まず、ディメンション全体の一部として日付を追加しないでください。日付自体はディメンションとして存在する必要があります。

2番目は、NYMEX契約とモデル契約に参加してディメンションを作成する必要があります。名前付きクエリを使用してDSVに参加させることも、SQLビューを作成することも、DSVで両方のテーブルを分離してディメンションに参加させることもできます。

第3に、NYMEX取引があなたのファクトテーブルです。以前の両方のディメンションを作成したら、それらをキューブに追加し、ディメンション関係タブのファクトテーブルとContractNameとTradeDateフィールドを使用して結合する必要があります。