次の方法で共有


多対多関係の定義

通常、ディメンションを定義する場合、1 つのディメンション メンバーは多数のファクトに結合できますが、各ファクトを結合できるのは 1 つのディメンションのみです。 たとえば、各顧客は多数の商品を注文できますが、それぞれの注文は 1 人の顧客に所属します。 リレーショナル データベースの用語では、これは 一対多リレーションシップと呼ばれます。 しかし、1 つのファクトが複数のディメンション メンバーに結合する場合があります。 リレーショナル データベース用語では、これを 多対多のリレーションシップと呼びます。 たとえば、1 回の購入には複数の購入動機があることが考えられ、また、1 つの購入動機が複数の購入に結び付く (関連付けられる) ことがあります。 結合テーブルは、各購入に関連する購入動機の定義に使用されます。 このようなリレーションシップから作成された Sales Reason ディメンションには、1 回の販売取り引きに関連付けられるメンバーが複数存在します。 多対多のディメンションは、従来のスター スキーマ以上にディメンショナル モデルを展開し、ディメンションが直接ファクト テーブルに関連付けられていなくても複雑な分析を可能にします。

Analysis Services では、ディメンション テーブルに結合される中間ファクト テーブルを指定することで、ディメンションとメジャー グループの間に多対多リレーションシップを定義します。 その後、中間ファクト テーブルは、ファクト テーブルを関連付ける中間ディメンション テーブルに関連付けられます。 中間ファクト テーブルとリレーションシップ内のディメンション テーブル、および中間ファクトと中間ディメンション間の多対多のリレーションシップにより、そのリレーションシップに指定されている主ディメンションのメンバーおよびメジャー グループ内のグループとの間に多対多のリレーションシップが作成されます。 中間メジャー グループを通じてディメンションとメジャー グループ間の多対多のリレーションシップを定義するには、中間メジャー グループは 1 つ以上のディメンションを元のメジャー グループと共有する必要があります。

多対多のディメンションでは値は個別に集計され、すべてのメンバーに対して 2 回以上集計されることはありません。

Note

多対多ディメンション リレーションシップをサポートするには、関連するすべてのテーブル間のデータ ソース ビューで主キーと外部キーのリレーションシップを定義する必要があります。 このようにしないと、キューブ デザイナーの [ディメンションの使用法] タブでリレーションシップを確立するときに正しいメジャー グループを選択できません。

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

このトピックの実習では、まず、Sales Reasons ディメンションと Sales Reasons メジャー グループを作成します。次に、Sales Reasons メジャー グループを介して、Sales Reasons ディメンションと Internet Sales メジャー グループの間に多対多のリレーションシップを定義します。

データ ソース ビューへの必要なテーブルの追加

  1. データ ソース ビュー デザイナーを開き、 Adventure Works DW 2012 データ ソース ビューを表示します。

  2. [ダイアグラム オーガナイザー] ウィンドウ内の任意の場所を右クリックし、[新しいダイアグラム] をクリックして、この新しいダイアグラムの名前として を指定Internet Sales Order Reasonsします。

  3. [テーブル] ペインの [InternetSales] テーブルを、 [ダイアグラム] ペインにドラッグします。

  4. [ダイアグラム] ペイン内を右クリックし、 [テーブルの追加と削除]をクリックします。

  5. [テーブルの追加と削除] ダイアログ ボックスで、 [含まれているオブジェクト] ボックスの一覧に DimSalesReason テーブルと FactInternetSalesReason テーブルを追加し、 [OK]をクリックします。

    関係するテーブル間の主キーと外部キーのリレーションシップは、基になるリレーショナル データベースで定義されているため、自動的に確立されます。 これらのリレーションシップが基のリレーショナル データベースに定義されていない場合は、データ ソース ビューで定義する必要があります。

  6. [書式] メニューで [自動レイアウト]をポイントし、 [ダイアグラム]をクリックします。

  7. プロパティ ウィンドウで、DimSalesReason テーブルの FriendlyName プロパティを にSalesReason変更し、FactInternetSalesReason テーブルの FriendlyName プロパティを にInternetSalesReason変更します。

  8. [テーブル] ペインで [InternetSalesReason (dbo.FactInternetSalesReason)]を展開し、 [SalesOrderNumber]をクリックします。次に、[プロパティ] ウィンドウで、このデータ列の DataType プロパティを確認します。

    [SalesOrderNumber] 列のデータ型は文字列になっています。

  9. テーブル内の他の列のデータ型を InternetSalesReason 確認します。

    このテーブルでは、他の 2 つの列のデータ型が数値型になっています。

  10. [テーブル] ペインで [InternetSalesReason (dbo.FactInternetSalesReason)]を右クリックし、 [データの探索]をクリックします。

    次の図のように、各並び順の行番号では、その行の商品の購入動機がキー値により識別されます。

    購入の販売理由を識別するためのキー値 購入の

中間メジャー グループの定義

  1. Analysis Services チュートリアル キューブのキューブ Designerに切り替え、[キューブ構造] タブをクリックします。

  2. [メジャー] ペイン内を右クリックし、 [新しいメジャー グループ]をクリックします。 詳細については、「 多次元モデル内のメジャーおよびメジャー グループの作成」を参照してください。

  3. [新しいメジャー グループ] ダイアログ ボックスの [データ ソース ビューからテーブルを選択する] ボックスの一覧で を選択InternetSalesReasonし、[OK] をクリックします

    Internet Sales Reason メジャー グループが [メジャー] ペインに表示されます。

  4. Internet Sales Reason メジャー グループを展開します。

    この新しいメジャー グループには、メジャー ( Internet Sales Reason Count メジャー) が 1 つだけ定義されています。

  5. [Internet Sales Reason Count] を選択し、[プロパティ] ウィンドウでこのメジャーのプロパティを確認します。

    このメジャーの AggregateFunction プロパティは、 Sum ではなく、 Countとして定義されていることがわかります。 基になるデータ型が文字列データ型であるため、Analysis Services は [カウント ] を選択しました。 Analysis Services が実際のメジャーとしてではなく数値キーとして検出したため、基になるファクト テーブル内の他の 2 つの列はメジャーとして選択されませんでした。 準加法の動作の詳細については、「 準加法の動作の定義」を参照してください。

  6. [プロパティ] ウィンドウで、 Internet Sales Reason Count メジャーの Visible プロパティを Falseに変更します。

    このメジャーは、Internet Sales ディメンションの隣に定義する Sales Reason ディメンションを結合するためにのみ使用されます。 ユーザーがこのメジャーを直接表示することはありません。

    次の図は、 Internet Sales Reason Count メジャーのプロパティを示しています。

    Internet Sales Reason Count メジャーのプロパティ

多対多ディメンションの定義

  1. ソリューション エクスプローラーで、[ディメンション] を右クリックし、[新しいディメンション] をクリックします。

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

  3. [作成方法の選択] ページで [既存のテーブルの使用] オプションが選択されていることを確認し、 [次へ]をクリックします。

  4. [基になる情報の指定] ページで、 Adventure Works DW 2012 データ ソース ビューが選択されていることを確認します。

  5. [メイン テーブル] の一覧で、 を選択しますSalesReason

  6. [キー列] ボックスの一覧に [SalesReasonKey] が表示されていることを確認します。

  7. [名前列] ボックスの一覧から [SalesReasonName]を選択します。

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

  9. [ディメンション属性の選択] ページで、 Sales Reason Key 属性が自動的に選択されます。これは、この属性がキー属性であるためです。 Sales Reason Reason Type 属性の横にある [チェック] ボックスを選択し、その名前を にSales Reason Type変更し、[次へ] をクリックします。

  10. [ウィザードの完了] ページで [完了] をクリックすると、Sales Reason ディメンションが作成されます。

  11. [ファイル] メニューの [すべてを保存] をクリックします。

  12. Sales Reason ディメンションのディメンション Designerの [属性] ペインで、[Sales Reason Key]\(販売理由キー\) を選択し、プロパティ ウィンドウの Name プロパティを に変更します。Sales Reason.

  13. ディメンション Designerの [階層] ペインで、レベルと Sales Reason レベルを含む Sales Reason TypeSales Reasons ユーザー階層をその順序で作成します。

  14. プロパティ ウィンドウで、Sales Reasons 階層の AllMemberName プロパティの値として を定義All Sales Reasonsします。

  15. Sales Reason ディメンションの AttributeAllMemberName プロパティの値として定義All Sales Reasonsします。

  16. 新しく作成したディメンションをキューブ ディメンションとして Analysis Services Tutorial キューブに追加するには、キューブ Designerに切り替えます。 [キューブ構造] タブの [ディメンション] ペイン内で右クリックし、 [キューブ ディメンションの追加]をクリックします。

  17. [キューブ ディメンションの追加] ダイアログ ボックスで、 [Sales Reason] を選択し、 [OK]をクリックします。

  18. [ファイル] メニューの [すべてを保存] をクリックします。

多対多リレーションシップの定義

  1. Analysis Services チュートリアル キューブのキューブ Designerに切り替え、[ディメンションの使用法] タブをクリックします。

    Sales Reason ディメンションには、 Internet Sales Reason メジャー グループで定義されている標準のリレーションシップがあります。ただし、 Internet Sales メジャー グループおよび Reseller Sales メジャー グループで定義されたリレーションシップはありません。 また、 Internet Sales Order Details ディメンションには Internet Sales Reason ディメンションで定義されている標準のリレーションシップがあり、 Internet Sales メジャー グループとの ファクト リレーションシップ があります。 このディメンションが存在しなかった場合 (または Internet Sales Reason メジャー グループおよび Internet Sales メジャー グループとのリレーションシップを持つ別のディメンションが存在しなかった場合)、多対多のリレーションシップを定義することはできません。

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

  3. [リレーションシップの定義] ダイアログ ボックスで、 [リレーションシップの種類の選択] ボックスの一覧から [多対多] を選択します。

    Sales Reason ディメンションを Internet Sales メジャー グループに接続する中間メジャー グループを定義する必要があります。

  4. [中間メジャー グループ] ボックスの一覧で [Internet Sales Reason]を選択します。

    次の図は、 [リレーションシップの定義] ダイアログ ボックスでの操作を示しています。

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

  5. [OK] をクリックします。

    多対多アイコンにより、Sales Reason ディメンションと Internet Sales メジャー グループの間のリレーションシップが表されます。

キューブおよび多対多ディメンションの表示

  1. [ビルド] メニューの [Analysis Services Tutorial の配置]をクリックします。

  2. デプロイが正常に完了したら、Analysis Services チュートリアル キューブのキューブ Designerの [ブラウザー] タブに切り替えて、[再接続] をクリックします。

  3. データ ペインのデータ領域に Internet Sales-Sales Amount メジャーを追加します。

  4. Sales Reason ディメンションの Sales Reasons ユーザー定義階層を、データ ペインの行領域に追加します。

  5. メタデータ ペインで、 [Customer][Location][Customer Geography][Members][All Customers][Australia]の順にクリックし、 [Queensland]を右クリックして [フィルターに追加]をクリックします。

  6. レベルの各メンバーを Sales Reason Type 展開して、顧客がインターネット経由で Adventure Works 製品を購入するために与えた各理由に関連付けられているドル値を確認します。

    購入理由に関連付けられている売上金額をすべて加算すると、総売上額を上回ります。 これは、製品の購入理由を複数選択した顧客がいたためです。

    次の図は、キューブ デザイナーの [フィルター] ペインと [データ] ペインです。

    キューブ Designerの [フィルター] ウィンドウと

このレッスンの次の作業

メジャー グループでのディメンション粒度の定義

参照

データ ソース ビュー Designer (Analysis Services)ディメンション リレーションシップでのダイアグラムの操作 多対多リレーションシップと多対多リレーションシップ のプロパティを定義する