次の方法で共有


ファクト リレーションシップの定義

ディメンション メジャーをファクト テーブルのデータ アイテムに関連付けなければならない場合があります。また、特定の販売ファクタ (請求番号や受注番号) など、関連している特定の補足情報について、ファクト テーブルから情報を抽出しなければならない場合があります。このように、ファクト テーブル アイテムに基づいて定義されたディメンションを、ファクト ディメンションと呼びます。ファクト ディメンションは、逆ディメンションとも呼ばれます。特定の請求番号に関連するすべての行をグループ化する場合などのように、関連するテーブルの行をまとめてグループ化するには、ファクト ディメンションを使用すると便利です。この情報は、リレーショナル データベースの個々のディメンション テーブルに格納することができます。しかし、情報ごとに異なるディメンション テーブルを作成してもメリットはありません。ファクト テーブルのサイズに比例してディメンション テーブルが大きくなり、データを複製することによって不要な複雑さを招くことになるからです。

Microsoft SQL Server 2005 Analysis Services (SSAS) では、MOLAP ディメンションにファクト ディメンション データを複製してクエリ パフォーマンスを向上させる方法と、ファクト ディメンションを ROLAP ディメンションとして定義し、クエリ パフォーマンスを犠牲にしつつ記憶領域を節約する方法を選択できます。MOLAP ストレージ モードでディメンションを格納する場合、すべてのディメンション メンバは、メジャー グループのパーティションの他に、圧縮率の高い MOLAP 構造内の Analysis Services のインスタンスに格納されます。ROLAP ストレージ モードでディメンションを格納する場合、MOLAP 構造にはディメンション定義のみが格納され、ディメンションのメンバ自体はクエリが行われるたびに基となるリレーショナル ファクト テーブルからクエリされます。ファクト ディメンションにクエリを送信する頻度、通常のクエリにより返される行数、クエリのパフォーマンス、および処理コストなどを考慮し、適切なストレージ モードを決定します。ディメンションを ROLAP モードとして定義する場合は、そのディメンションを使用するすべてのキューブを ROLAP ストレージ モードで格納しなければならないということではありません。この点は、SQL Server 2000 Analysis Services とは異なります。

ファクト ディメンションを定義している場合は、ファクト ディメンションとメジャー グループの間のリレーションシップを、ファクト リレーションシップとして定義できます。ファクト リレーションシップには、次の制限が適用されます。

  • 粒度属性は、ディメンションとファクト テーブル内のファクトとの間に一対一のリレーションシップを作成するディメンションのキー列でなければなりません。
  • ディメンションに定義できるファクト リレーションシップは、1 メジャー グループとのファクト リレーションシップに限定されます。
ms167409.note(ja-jp,SQL.90).gifメモ :
ファクト リレーションシップが参照するメジャー グループを更新するたびに、ファクト ディメンションを増分更新しなければなりません。

詳細については、「ディメンション リレーションシップ」および「ファクト リレーションシップとファクト リレーションシップ プロパティの定義」を参照してください。

このトピックの実習では、FactInternetSales ファクト テーブルの CustomerPONumber 列に基づく新しいキューブ ディメンションを追加します。次に、新しいキューブ ディメンションと Internet Sales メジャー グループの間のリレーションシップを、ファクト リレーションシップとして定義します。

Internet Sales Orders ファクト ディメンションの定義

Internet Sales Orders ファクト ディメンションを定義するには

  1. Analysis Services Tutorial キューブのキューブ デザイナに切り替え、[キューブ構造] タブをクリックします。

  2. [ディメンション] ペイン内を右クリックし、[キューブ ディメンションの追加] をクリックします。

  3. [キューブ ディメンションの追加] ダイアログ ボックスで、[新しいディメンション] をクリックします。

    ディメンション ウィザードが開きます。

  4. [ディメンション ウィザードへようこそ] ページで [次へ] をクリックします。

  5. [データ ソース ビューの選択] ページが表示されます。Adventure Works DW データ ソース ビューのディメンションのデータを使用するので、既定値のままで [次へ] をクリックします。

  6. [ディメンションの種類の選択] ページが表示されます。新しいディメンションを標準ディメンションとして作成するので、既定値のままで [次へ] をクリックします。

  7. [メイン ディメンション テーブルの選択] ページで、[メイン テーブル] ボックスの一覧から [dbo.FactInternetSales] をクリックします。

    複合キーが、キー列である SalesOrderNumber 列および SalesOrderLineNumber 列に基づいて定義されます。メンバ名のプロパティには SalesOrderLineNumber 列が定義されます。メンバ名のプロパティに対応する列は、FactInternetSales テーブルのみから定義できます。

  8. [次へ] をクリックします。

  9. [関連テーブルの選択] ページで、テーブルが何も選択されていないことを確認し、[次へ] をクリックします。

  10. [ディメンション属性の選択] ページで、すべてのディメンション属性の選択を解除します。次に、Customer PO Number ディメンション属性のチェック ボックスをオンにします。

    ディメンション ウィザードでは、どの複合キーも属性として選択することができません。複合キーが列キーとして定義されているためです。複合キー自体を属性として追加するには、ディメンションを定義した後に複合キーを属性として定義します。

  11. [完了] をクリックします。ディメンションの名前を「Internet Sales Order Details」に変更し、[完了] をクリックします。[OK] をクリックし、新しく作成したデータベース ディメンションを、キューブ ディメンションとして Analysis Services Tutorial キューブに追加します。

  12. Internet Sales Order Details ディメンションのディメンション デザイナを開きます。

  13. [属性] ペインで Internet Sales 属性をクリックします。次に、[プロパティ] ウィンドウで、Name プロパティのボックスに「Item Description」と入力します。

  14. NameColumn プロパティのセルで、[(新規)] をクリックします。次に、[オブジェクトのバインド] ダイアログ ボックスで、基になるテーブルには [Product] を、基になる列には [EnglishProductName] を選択し、[OK] をクリックします。

  15. [データ ソース ビュー] ペインで、InternetSales テーブルの SalesOrderNumber 列をクリックし、[属性] ペインにドラッグします。これにより、Sales Order Number 属性がディメンションに追加されます。

  16. 新しい Sales Order Number 属性の Name プロパティを「Order Number」に変更し、OrderBy プロパティを Key に変更します。

  17. [階層とレベル] ペインで、Order Number レベルと Item Description レベルを含む Internet Sales Orders ユーザー階層を作成します。2 つのレベルはこの順序で並べてください。

  18. [属性] ペインで Internet Sales Order Details をクリックします。次に、[プロパティ] ウィンドウで、StorageMode プロパティの値を確認します。

    既定では、このディメンションは MOLAP ディメンションに格納されます。このストレージ モードを ROLAP に変更すると、処理時間を短縮し、記憶領域を節約できますが、クエリのパフォーマンスが低下します。このチュートリアルでは、MOLAP ストレージ モードを使用します。

ファクト ディメンションへのファクト リレーションシップの定義

ファクト ディメンションにファクト リレーションシップを定義するには

  1. Analysis Services Tutorial キューブのキューブ デザイナに切り替え、[キューブ構造] タブをクリックします。

    以下のアイコンが示すように、Internet Sales Order Details キューブ ディメンションがファクト リレーションシップを保持するよう、自動的に構成されます。

    次の図は、ファクト リレーションシップを持つ Internet Sales Order Details キューブ ディメンションを示します。

    Internet Sales Order Details キューブ ディメンション

  2. Internet Sales メジャー グループと Internet Sales Order Details ディメンションが交差する位置にある Item Description セルで、参照ボタン ([...]) をクリックします。

    [リレーションシップの定義] ダイアログ ボックスが開きます。構成できるプロパティはありません。

    次の図は [リレーションシップの定義] ダイアログ ボックスのファクト リレーションシップのプロパティです。

    [リレーションシップの定義] ダイアログ ボックス

  3. [キャンセル] をクリックします。

ファクト ディメンションを使用したキューブの表示

ファクト ディメンションを使用してキューブを表示するには

  1. [ビルド] メニューの [Analysis Services Tutorial の配置] をクリックし、Analysis Services のインスタンスへの変更を配置して、データベースを処理します。

  2. 配置が正常に完了したら、Analysis Services Tutorial キューブのキューブ デザイナで [ブラウザ] タブをクリックし、[再接続] をクリックします。

  3. データ ペインからすべてのメジャーと階層を消去します。次に、データ ペインのデータ領域に Internet Sales-Sales Amount メジャーを追加します。

  4. メタデータ ペインで、[Customer][Location][Customer Geography][Members][All Customers][Australia][Queensland][Brisbane][4000] の順にクリックし、[Adam Powell] を右クリックして [サブキューブ領域に追加] をクリックします。

    フィルタリングを使用し、1 顧客から返される販売注文数を制限すると、クエリ パフォーマンスを大幅に犠牲にすることなく、基となる詳細情報を大規模なファクト テーブルから検索できます。

  5. Internet Sales Order Details ディメンションの Internet Sales Orders ユーザー定義階層を、データ ペインの行領域に追加します。

    Adam Powell 氏の注文数と、それに対応するインターネット販売量が データ ペインに表示されます。

  6. 行領域の各販売注文数を展開し、これらの注文に含まれているアイテムの詳細を表示します。

    次の図は、前の手順で作成されたディメンションを示します。

    Internet Sales-Sales Amount のディメンション指定

このレッスンの次の作業

多対多関係の定義

参照

その他の技術情報

ディメンション リレーションシップ
ファクト リレーションシップとファクト リレーションシップ プロパティの定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手