ディメンションを定義する場合、通常、各ファクトは 1 つのディメンション メンバーにのみ結合されますが、1 つのディメンション メンバーはさまざまなファクトに関連付けることができます。 たとえば、各顧客は多数の注文を持つことができますが、各注文は 1 つの顧客に属します。 リレーショナル データベースの用語では、これは 一対多リレーションシップと呼ばれます。 ただし、1 つのファクトが複数のディメンション メンバーに結合される場合があります。 リレーショナル データベースの用語では、これは 多対多リレーションシップと呼ばれます。 たとえば、顧客が購入を行う理由が複数あり、購入理由を複数の購入に関連付けることができます。 結合テーブルは、各購入に関連する販売理由を定義するために使用されます。 このようなリレーションシップから構築された Sales Reason ディメンションには、1 つの販売トランザクションに関連する複数のメンバーが含まれます。 多対多ディメンションは、従来のスター スキーマを超えてディメンション モデルを拡張し、ディメンションがファクト テーブルに直接関連していない場合に複雑な分析をサポートします。
Analysis Services では、ディメンション テーブルに結合される中間ファクト テーブルを指定することで、ディメンションとメジャー グループの間に多対多リレーションシップを定義します。 中間ファクト テーブルは、ファクト テーブルが結合される中間ディメンション テーブルに結合されます。 中間ファクト テーブルとリレーションシップ内のディメンション テーブルと中間ディメンションの両方の間の多対多リレーションシップにより、プライマリ ディメンションのメンバーと、リレーションシップで指定されたメジャー グループ内のメジャーの間に多対多リレーションシップが作成されます。 中間メジャー グループを介してディメンションとメジャー グループの間に多対多リレーションシップを定義するには、中間メジャー グループが 1 つ以上のディメンションを元のメジャー グループと共有する必要があります。
多対多ディメンションでは、値は個別に合計されます。つまり、All メンバーに対して複数回集計されません。
注
多対多ディメンション リレーションシップをサポートするには、関連するすべてのテーブル間のデータ ソース ビューで主キーと外部キーのリレーションシップを定義する必要があります。 そうしないと、キューブ デザイナーの [ ディメンション使用法 ] タブでリレーションシップを確立するときに、適切な中間メジャー グループを選択できなくなります。
詳細については、「 ディメンション リレーションシップ」および「 多対多リレーションシップの定義」および「多対多リレーションシップのプロパティ」を参照してください。
このトピックのタスクでは、Sales Reasons ディメンションと Sales Reasons メジャー グループを定義し、Sales Reasons メジャー グループを使用して Sales Reasons ディメンションと Internet Sales メジャー グループの間に多対多リレーションシップを定義します。
データ ソース ビューへの必須テーブルの追加
Adventure Works DW 2012 データ ソース ビューのオープン データ ソース ビュー デザイナー。
ダイアグラム オーガナイザー ウィンドウ内の任意の場所を右クリックし、[新しいダイアグラム] をクリックし、この新しいダイアグラムの名前として
Internet Sales Order Reasons
を指定します。[テーブル] ペインから InternetSales テーブルをダイアグラム ペインにドラッグします。
ダイアグラム ペイン内の任意の場所を右クリックし、[テーブルの追加と削除] をクリックします。
[ テーブルの追加と削除 ] ダイアログ ボックスで、 DimSalesReason テーブルと FactInternetSalesReason テーブルを [含まれるオブジェクト ] リストに追加し、[ OK] をクリックします。
関連するテーブル間の主キーと外部キーのリレーションシップは、基になるリレーショナル データベースで定義されているため、自動的に確立されます。 これらのリレーションシップが基になるリレーショナル データベースで定義されていない場合は、データ ソース ビューで定義する必要があります。
[ 書式 ] メニューの [ 自動レイアウト] をポイントし、[ ダイアグラム] をクリックします。
[プロパティ] ウィンドウで、DimSalesReason テーブルの FriendlyName プロパティを
SalesReason
に変更し、FactInternetSalesReason テーブルの FriendlyName プロパティをInternetSalesReason
に変更します。テーブル ウィンドウで、InternetSalesReason (dbo.FactInternetSalesReason) を展開し、SalesOrderNumber をクリックし、[プロパティ] ウィンドウでこのデータ列の DataType プロパティを確認します。
SalesOrderNumber 列のデータ型が文字列データ型であることに注意してください。
InternetSalesReason
テーブル内の他の列のデータ型を確認します。このテーブルの他の 2 つの列のデータ型は数値データ型であることに注意してください。
テーブル ウィンドウで、InternetSalesReason (dbo.FactInternetSalesReason) を右クリックし、次に データの探索 をクリックします。
次の図に示すように、各注文内の行番号ごとに、キー値によってその品目の購入の販売理由が識別されます。
中間メジャー グループの定義
Analysis Services チュートリアル キューブのキューブ デザイナーに切り替えて、[ キューブ構造 ] タブをクリックします。
メジャー ペイン内の任意の場所を右クリックし、新しいメジャー グループ をクリックします。 詳細については、多次元モデルでのメジャーとメジャー グループの作成を参照してください。
[新しいメジャー グループ] ダイアログ ボックスの [データ ソース ビューからテーブルを選択] ボックスの一覧で
InternetSalesReason
を選択し、[OK] をクリックします。インターネット販売理由 メジャー グループが メジャー ペインに表示されます。
[インターネット販売理由] メジャー グループを展開します。
この新しいメジャー グループである Internet Sales Reason Count メジャーに対して定義されているメジャーは 1 つだけであることに注意してください。
[Internet Sales Reason Count]\(インターネット販売理由数\) を選択し、[プロパティ] ウィンドウでこのメジャーのプロパティを確認します。
このメジャーの AggregateFunction プロパティは、Sum ではなく Count として定義されていることに注意してください。 基になるデータ型が文字列データ型であるため、Analysis Services は Count を選択しました。 Analysis Services が実際のメジャーではなく数値キーとして検出したため、基になるファクト テーブルの他の 2 つの列はメジャーとして選択されませんでした。 詳細については、「 準加法動作の定義」を参照してください。
[プロパティ] ウィンドウで、Internet Sales Reason Count メジャーの Visible プロパティを False に変更します。
この測定値は、今後定義されるインターネット売上測定グループの横にある売上理由ディメンションの結合にのみ使用されます。 ユーザーはこの測定を直接閲覧しません。
次の図は、 Internet Sales Reason Count メジャーのプロパティを示しています。
多対多ディメンションの定義
ソリューション エクスプローラーで、[ ディメンション] を右クリックし、[ 新しいディメンション] をクリックします。
[ ディメンション ウィザードへようこそ ] ページで、[ 次へ] をクリックします。
[ 作成方法の選択 ] ページで、[既存の テーブルを使用 する] オプションが選択されていることを確認し、[ 次へ] をクリックします。
[ ソース情報の指定 ] ページで、Adventure Works DW 2012 データ ソース ビューが選択されていることを確認します。
メイン テーブルの一覧で、
SalesReason
を選択します。[ キー列 ] の一覧で、 SalesReasonKey が一覧表示されていることを確認します。
名前列の一覧で、SalesReasonName を選択します。
[次へ] をクリックします。
[ ディメンション属性の選択 ] ページでは、 Sales Reason Key 属性がキー属性であるため、自動的に選択されます。 Sales Reason Reason Type 属性の横にあるチェック ボックスをオンにし、名前を
Sales Reason Type
に変更して、[次へ] をクリックします。[ ウィザードの完了 ] ページで、[ 完了 ] をクリックして Sales Reason ディメンションを作成します。
[ファイル] メニューの [すべてを保存] をクリックします。
Sales Reason ディメンションのディメンション デザイナーの [属性] ウィンドウで、[Sales Reason Key] を選択し、[プロパティ] ウィンドウの Name プロパティを次の値に変更します。
Sales Reason.
ディメンション デザイナーの [階層] ウィンドウで、
Sales Reason Type
レベルと Sales Reason レベルを含む Sales Reasons ユーザー階層をその順序で作成します。[プロパティ] ウィンドウで、Sales Reasons 階層の AllMemberName プロパティの値として
All Sales Reasons
を定義します。Sales Reason ディメンションの AttributeAllMemberName プロパティの値として
All Sales Reasons
を定義します。新しく作成したディメンションをキューブ ディメンションとして Analysis Services Tutorial キューブに追加するには、 キューブ デザイナーに切り替えます。 [ キューブ構造 ] タブで、[ ディメンション ] ウィンドウを右クリックし、[ キューブ ディメンションの追加] を選択します。
[ キューブ ディメンションの追加 ] ダイアログ ボックスで、[ Sales Reason ] を選択し、[OK] をクリック します。
[ファイル] メニューの [すべてを保存] をクリックします。
多対多リレーションシップの定義
Analysis Services チュートリアル キューブのキューブ デザイナーに切り替えて、[ディメンションの 使用法 ] タブをクリックします。
Sales Reason ディメンションには、Internet Sales Reason メジャー グループと定義された通常のリレーションシップがありますが、Internet Sales メジャー グループまたは Reseller Sales メジャー グループとのリレーションシップが定義されていないことに注意してください。 また、Internet Sales Order Details ディメンションには、Internet Sales Reason ディメンションと通常のリレーションシップが定義されており、Internet Sales メジャー グループとのファクト リレーションシップが設定されていることにも注意してください。 このディメンションが存在しない場合 (または 、Internet Sales Reason と Internet Sales メジャー グループの両方とのリレーションシップを持つ別のディメンションが存在しなかった場合)、多対多リレーションシップを定義することはできません。
Internet Sales メジャー グループと Sales Reason ディメンションの交差部分にあるセルをクリックし、参照ボタン (...) をクリックします。
[リレーションシップの定義] ダイアログで、[リレーションシップの種類の選択] のリストから [多対多] を選択します。
Sales Reason ディメンションを Internet Sales メジャー グループに接続する中間メジャー グループを定義する必要があります。
[中間メジャー グループ] の一覧で、[インターネット販売理由] を選択します。
次の図は、[ リレーションシップの定義 ] ダイアログ ボックスの変更を示しています。
OK をクリックします。
Sales Reason ディメンションと Internet Sales メジャー グループの間のリレーションシップを表す多対多アイコンに注目してください。
キューブと多対多ディメンションの参照
[ ビルド ] メニューの [ Analysis Services チュートリアルの配置] をクリックします。
配置が正常に完了したら、Analysis Services チュートリアル キューブのキューブ デザイナーの [ ブラウザー ] タブに切り替えて、[ 再接続] をクリックします。
インターネット Sales-Sales 量メジャーをデータ ウィンドウのデータ領域に追加します。
Sales Reasons ユーザー定義階層を Sales Reason ディメンションからデータ ペインの行領域に追加します。
メタデータ ウィンドウで、[ 顧客]、[ 場所]、[ 顧客地域]、[ メンバー]、[ すべての顧客]、[ オーストラリア] の順に展開して、[ クイーンズランド] を右クリックし、[ フィルターに追加] をクリックします。
Sales Reason Type
レベルの各メンバーを展開して、クイーンズランドの顧客がインターネット経由で Adventure Works 製品を購入した理由ごとの関連するドル値をレビューします。各販売理由に関連付けられている合計が合計売上を超える点に注意してください。 これは、一部のお客様が購入の理由を複数挙げたためです。
次の図は、キューブ デザイナーの [フィルター ] ウィンドウと [データ ] ペインを示しています。
このレッスンの次の作業
こちらもご覧ください
データ ソース ビュー デザイナー (Analysis Services) のダイアグラムを操作する ディメンション リレーションシップで多対多リレーションシップと多対多リレーションシップ プロパティを定義する