ファクト リレーションシップの定義
ディメンション メジャーをファクト テーブルのデータ アイテムに関連付けなければならない場合があります。また、特定の販売ファクター (請求番号や受注番号) など、関連している特定の補足情報について、ファクト テーブルから情報を抽出しなければならない場合があります。 このように、ファクト テーブル アイテムに基づいて定義されたディメンションを、 ファクト ディメンションと呼びます。 ファクト ディメンションは、逆ディメンションとも呼ばれます。 特定の請求番号に関連するすべての行をグループ化する場合などのように、関連するテーブルの行をまとめてグループ化するには、ファクト ディメンションを使用すると便利です。 この情報は、リレーショナル データベースの個々のディメンション テーブルに格納することができます。しかし、情報ごとに異なるディメンション テーブルを作成してもメリットはありません。ファクト テーブルのサイズに比例してディメンション テーブルが大きくなり、データを複製することによって不要な複雑さを招くことになるからです。
Analysis Services 内では、クエリパフォーマンスを向上させるために MOLAP ディメンション構造内のファクト ディメンション データを複製するか、またはクエリパフォーマンスを犠牲にしてストレージ領域を節約するためにファクト ディメンションを ROLAP ディメンションとして定義するかを決定できます。 MOLAP ストレージ モードでディメンションを格納すると、すべてのディメンション メンバーは、メジャー グループのパーティションに格納されるだけでなく、高度に圧縮された MOLAP 構造で Analysis Services のインスタンスに格納されます。 ROLAP ストレージ モードでディメンションを格納する場合、ディメンション定義のみが MOLAP 構造に格納されます。ディメンション メンバー自体は、クエリ時に基になるリレーショナル ファクト テーブルから照会されます。 ファクト ディメンションにクエリを送信する頻度、通常のクエリにより返される行数、クエリのパフォーマンス、および処理コストなどを考慮し、適切なストレージ モードを決定します。 ディメンションを ROLAP モードとして定義する場合は、そのディメンションを使用するすべてのキューブを ROLAP ストレージ モードで格納しなければならないということではありません。 各ディメンションのストレージ モードは、個別に構成できます。
ファクト ディメンションを定義している場合は、ファクト ディメンションとメジャー グループの間のリレーションシップを、ファクト リレーションシップとして定義できます。 ファクト リレーションシップには、次の制限が適用されます。
粒度属性は、ディメンションとファクト テーブル内のファクトとの間に一対一のリレーションシップを作成するディメンションのキー列でなければなりません。
ディメンションに定義できるファクト リレーションシップは、1 メジャー グループとのファクト リレーションシップに限定されます。
注意
ファクト リレーションシップが参照するメジャー グループを更新するたびに、ファクト ディメンションを増分更新しなければなりません。
詳細については、「 ディメンション リレーションシップ」および「 ファクト リレーションシップとファクト リレーションシップのプロパティの定義」を参照してください。
このトピックの実習では、 FactInternetSales ファクト テーブルの CustomerPONumber 列に基づく新しいキューブ ディメンションを追加します。 次に、新しいキューブ ディメンションと Internet Sales メジャー グループの間のリレーションシップを、ファクト リレーションシップとして定義します。
Internet Sales Orders ファクト ディメンションの定義
ソリューション エクスプローラーで、[ディメンション] を右クリックし、[新しいディメンション] をクリックします。
[ディメンション ウィザードへようこそ] ページで [次へ]をクリックします。
[作成方法の選択] ページで [既存のテーブルの使用] オプションが選択されていることを確認し、 [次へ]をクリックします。
[基になる情報の指定] ページで、 Adventure Works DW 2012 データ ソース ビューが選択されていることを確認します。
[メイン テーブル] ボックスの一覧で、 [InternetSales]を選択します。
[キー列] ボックスの一覧に [SalesOrderNumber] と [SalesOrderLineNumber] が表示されていることを確認します。
[名前列] ボックスの一覧から [SalesOrderLineNumber]を選択します。
[次へ] をクリックします。
[関連テーブルの選択] ページで、すべてのテーブルの横のチェック ボックスをオフにし、 [次へ]をクリックします。
[ディメンション属性の選択] ページで、ヘッダーのチェック ボックスを 2 回クリックしてすべてのチェック ボックスをオフにします。 Sales Order Number 属性はキー属性なので、選択されたままになります。
Customer PO Number 属性を選択し、 [次へ]をクリックします。
[ウィザードの完了] ページで、名前を Internet Sales Order Details に変更します。 [完了] をクリックしてウィザードを終了します。
[ファイル] メニューの [すべてを保存] をクリックします。
Internet Sales Order Details ディメンションのディメンション Designerの [属性] ウィンドウで、[販売注文番号] を選択し、プロパティ ウィンドウの Name プロパティを に変更します。
Item Description.
[NameColumn プロパティ] セルで、参照ボタン (...) をクリックします。[名前列] ダイアログ ボックスで、[ソース テーブル] の一覧から [製品] を選択し、[ソース] 列に [EnglishProductName] を選択し、[OK] をクリックします。
[データ ソース ビュー] ペインで、 InternetSales テーブルの SalesOrderNumber 列をクリックし、 [属性] ペインにドラッグします。これにより、 Sales Order Number 属性がディメンションに追加されます。
新しい Sales Order Number 属性の Name プロパティを に
Order Number
変更し、OrderBy プロパティを Key に変更します。[階層] ウィンドウで、インターネット販売注文のユーザー階層を作成します。この階層には、 と Item Description レベルが含まれます
Order Number
。この階層は、その順序で行われます。[属性] ペインで Internet Sales Order Detailsをクリックします。次に、[プロパティ] ウィンドウで、 StorageMode プロパティの値を確認します。
既定では、このディメンションは MOLAP ディメンションに格納されます。 このストレージ モードを ROLAP に変更すると、処理時間を短縮し、記憶領域を節約できますが、クエリのパフォーマンスが低下します。 このチュートリアルでは、MOLAP ストレージ モードを使用します。
新しく作成したディメンションをキューブ ディメンションとして Analysis Services Tutorial キューブに追加するには、キューブ Designerに切り替えます。 [キューブ構造] タブの [ディメンション] ペイン内で右クリックし、 [キューブ ディメンションの追加]をクリックします。
[キューブ ディメンションの追加]ダイアログ ボックスで、 [Internet Sales Order Details] を選択し、 [OK]をクリックします。
ファクト ディメンションへのファクト リレーションシップの定義
Analysis Services チュートリアル キューブのキューブ Designerで、[ディメンションの使用法] タブをクリックします。
以下のアイコンが示すように、 Internet Sales Order Details キューブ ディメンションがファクト リレーションシップを保持するよう、自動的に構成されます。
Internet Sales メジャー グループと Internet Sales Order Details ディメンションの積集合にある [アイテムの説明] セルの参照ボタン (...) をクリックして、ファクトリレーションシップのプロパティを確認します。
[リレーションシップの定義] ダイアログ ボックスが開きます。 構成できるプロパティはありません。
次の図は [リレーションシップの定義] ダイアログ ボックスのファクト リレーションシップのプロパティです。
[キャンセル] をクリックします。
ファクト ディメンションを使用したキューブの表示
[ ビルド ] メニューの [ Analysis Services チュートリアルの配置 ] をクリックして、Analysis Services のインスタンスに変更をデプロイし、データベースを処理します。
デプロイが正常に完了したら、[Analysis Services Tutorial] キューブの [キューブ] Designerの [ブラウザー] タブをクリックし、[再接続] ボタンをクリックします。
データ ペインからすべてのメジャーと階層を消去します。次に、データ ペインのデータ領域に Internet Sales-Sales Amount メジャーを追加します。
メタデータ ペインで、 [Customer]、 [Location]、 [Customer Geography]、 [Members]、 [All Customers]、 [Australia]、 [Queensland]、 [Brisbane]、 [4000]の順にクリックし、 [Adam Powell]を右クリックして [フィルターに追加]をクリックします。
フィルタリングを使用し、1 顧客から返される販売注文数を制限すると、クエリ パフォーマンスを大幅に犠牲にすることなく、基となる詳細情報を大規模なファクト テーブルから検索できます。
Internet Sales Order Details ディメンションの Internet Sales Orders ユーザー定義階層を、データ ペインの行領域に追加します。
Adam Powell 氏の注文数と、それに対応するインターネット販売量がデータ ペインに表示されます。
次の図は、前の手順の結果を示します。