2012-04-10 5 views
1

私は約10の外部キーを含む1つの主要なファクトテーブルを持っています。今私は主なファクトテーブルに接続するN:1の関係を持っている他の4つのファクトテーブルを持っています。 質問は、これらの4つのファクトテーブルにすべての外部キーをコピーするか、SSASキューブ処理中にメインファクトテーブルにランタイム結合する必要がありますか?メインファクトテーブルから他の関連テーブルにすべての外部キーをコピーする必要がありますか?

賛否両論は何ですか?

+0

あなたが例を与えることができます。 – Diego

+0

を分かりやすく分析することができます。メインファクトテーブルは FactTable(PKEY、FKey1、FKey2、FKey3、FKey4、値) FactTable1(PKEY、FactTable.PKey、ErrorCounter) FactTable2(PKEY、FactTable.PKey、EventCounter)のような関連するファクトテーブル あります質問は、FactTable1またはFactTable2を次のような構造に変更する必要があります。 FactTable1(PKey、FactTable.PKey、FactTable.FKey1、FactTable.FKey1、FactTable.FKey3、FactTable.FKey4、ErrorCounter) –

+0

4つのファクトテーブル別の事実と多対1の関係を持っていますか?定義によって、ファクト表は共通の次元によって関連付けられます。非常に限られた状況を除いて、ファクト・キーを別のファクト表に置くことはありません。 –

答えて

0

私はコメントにlinebreakを追加できません。だから私はここにコメントを残す。
メインファクトテーブルは
FactTable(PKEY、FKey1、FKey2、FKey3、FKey4、値)

FactTable1(PKEY、FactTable.PKey、ErrorCounter)
FactTable2(PKEY、FactTable.PKey、のような関連するファクトテーブルでありますEventCounter)

質問は、私はこのように構成してFactTable1またはFactTable2を変更する必要があり、次のとおりです。
FactTable1(PKEY、FactTable.PKey、FactTable.FKey1、FactTable.FKey2、FactTable.FKey3、FactTable.FKey4、ErrorCounter)

0

あなたはそれをすべて1つのファクトテーブルに入れたいですか?どのようにSSASを対策/グループとして関連付けるのか。

現在のパフォーマンスの問題はありますか?キューブが別のテーブルにあるときにキューブを処理するのに5秒以上かかる場合、1つのテーブルにすべてをロードするために5分のETLが必要な場合は、それをそのまま保つ方が賢明でしょう。それ以外の場合は、1つのファクトテーブルにすべてを入れるとよいでしょう。

DimとFactの間の関係でSSASのキューブをモデル化する方法は、必ずしもテーブルがリレーショナルデータベースで互いに関連する方法と同じである必要はありません。

+0

私のキューブモデルでは、すべての事実がすべてのdimに対して定期的な関係になります。私の現在のリレーショナルDBスキーマでは、関連するファクトテーブルごとにビューを作成し、メインテーブルに参加してそれらの外部キーを取得します。私はSSAS DSVでこれらのビューを直接バインドします。私が気にするのは、パフォーマンス、キューブプロセスとETLの両方です。 ETL中に関連するすべてのテーブルにすべてのキーを入れることは賢明ですか?私は単純なテストをしましたが、大きな違いはありません。 –

0

パフォーマンスが目標で空間に問題はなく、親テーブルを参照せずに子ファクトテーブルから報告する場合は、FKテーブルを他のFACTテーブルに追加し、何も失わずに潜在的に少し得られる速度の。関連するテーブルを照会するときは、必ず親ファクトテーブルが含まれている場合(あなたは常に参加し、そうすることのコストをかけをしているので)しかし、その後はポイントがありません

関連する問題