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