参照リレーションシップの定義
このチュートリアルのこれまでの実習では、主キーから外部キーへのリレーションシップを使用し、メジャー グループのファクト テーブルに直接リンクしているテーブルに基づいて、各キューブ ディメンションを定義しました。このトピックの実習では、Reseller ディメンションを介し、Geography ディメンションを再販業者販売のファクト テーブルにリンクさせます。このようにリンクを中継するディメンションを、参照ディメンションといいます。参照ディメンションにより、販売店の売上と地域を関連付けることができます。詳細については、「参照リレーションシップと参照リレーションシップのプロパティの定義」を参照してください。
販売店の売上と地域の関連付け
販売店の売上と地域を関連付けるには
ソリューション エクスプローラで、[キューブ] フォルダ内にある [Analysis Services Tutorial] を右クリックし、[参照] をクリックします。
データ ペインからすべての階層を削除します。次に、データ ペインのデータ領域に Reseller Sales-Sales Amount メジャーが表示されていることを確認します。表示されていない場合は、このメジャーをデータ ペインに追加します。
メタデータ ペインで Geography ディメンションを展開し、[Geographies] ユーザー定義階層を、データ ペインの [ここに行のフィールドをドロップします] 領域までドラッグします。
次の図のように、Reseller Sales-Sales Amount メジャーは、Regions 階層の Country-Region 属性メンバによって正しく多次元化されていないことに注意してください。
Adventure Works DW データ ソース ビューのデータ ソース ビュー デザイナを開きます。
[ダイアグラム オーガナイザ] ペインで、Geography テーブルと ResellerSales テーブルの間のリレーションシップを確認します。
2 つのテーブルの間には直接的なリンクが存在しません。一方、Reseller テーブル、または SalesTerritory テーブルを介した間接的なリンクは存在します。
Geography および Reseller テーブルの間の主キーと外部キーのリレーションシップを表す矢印をダブルクリックします。
[リレーションシップの編集] ダイアログ ボックスで、GeographyKey 列は Geography テーブルで主キー、Reseller テーブルでは外部キーとなっていることがわかります。
[キャンセル] をクリックします。Analysis Services Tutorial キューブのキューブ デザイナに切り替え、[ディメンションの使用法] タブをクリックします。
現在、Geography キューブ ディメンションには、Internet Sales メジャー グループ、または Reseller Sales メジャー グループとのリレーションシップがありません。
Customer ディメンションと Internet Sales メジャー グループが交差する位置にある Full Name セルで、参照ボタン ([...]) をクリックします。
[リレーションシップの編集] ダイアログ ボックスが表示されます。設定内容を確認すると、DimCustomer ディメンション テーブルと FactInternetSales メジャー グループ テーブルの間には、これら 2 つのテーブルの CustomerKey 列に基づいて "標準" リレーションシップが定義されていることがわかります。これまでに定義したリレーションシップは、すべて "標準" リレーションシップです。
次の図は、DimCustomer ディメンション テーブルと、FactInternetSales メジャー グループ テーブルの間に "標準" リレーションシップが定義されている [リレーションシップの定義] ダイアログ ボックスです。
[キャンセル] をクリックします。
Geography ディメンションと Reseller Sales メジャー グループが交差する位置の名称未設定セルで、参照ボタン ([...]) をクリックします。
[リレーションシップの定義] ダイアログ ボックスを確認すると、現在のところ、Geography キューブ ディメンションと Reseller Sales メジャー グループの間には、リレーションシップが何も定義されていません。Geography ディメンションのディメンション テーブルと Reseller Sales メジャー グループのファクト テーブルの間には直接的なリレーションシップがないため、"標準" リレーションシップは定義できません。
[リレーションシップの種類の選択] ボックスの一覧から [参照対象] をクリックします。
中間テーブルと呼ばれる、メジャー グループ テーブルに直接接続しているディメンションを指定することにより、参照リレーションシップを定義します。Analysis Services は、この中間テーブルを使用して参照ディメンションをファクト テーブルにリンクします。次に、参照ディメンションを中間ディメンションにリンクさせるために使用する属性を指定します。
[中間ディメンション] ボックスの一覧から [Reseller] を選択します。
Reseller ディメンションの基となるテーブルを介して、Geography ディメンションの基となるテーブルがファクト テーブルにリンクされます。
[参照ディメンションの属性] ボックスの一覧から [Geography Key] を選択します。次に、[中間ディメンションの属性] ボックスの一覧から [Geography Key] を選択してみてください。
[中間ディメンションの属性] ボックスの一覧には [Geography Key] が表示されません。これは、GeographyKey 列が Reseller ディメンションの属性として定義されていないためです。
次の図は、Reseller 中間ディメンションの [リレーションシップの定義] ボックスで、Geography Key を中間ディメンション属性として使用できないようすを示しています。
[キャンセル] をクリックします。
次の実習では、GeographyKey 列に基づく属性を Reseller ディメンションに定義し、この問題を解決します。
中間ディメンション属性と参照ディメンション リレーションシップの定義
中間ディメンション属性と参照ディメンション リレーションシップを定義するには
Reseller ディメンションのディメンション デザイナを開き、[データ ソース ビュー] ペインで Reseller テーブルの各列を確認します。さらに、[属性] ペインの Reseller ディメンションに定義されている属性を確認します。
Reseller テーブルでは、GeographyKey が列として定義されています。この列に基づく Reseller ディメンションには、ディメンション定義が何も定義されていません。Geography ディメンションでは、Geography がディメンション属性として定義されています。Geography が、そのディメンションの基となるテーブルをファクト テーブルにリンクするキー列であるためです。
Geography Key 属性を Reseller ディメンションに追加するには、[データ ソース ビュー] ペインで [GeographyKey] を右クリックし、[列から新しい属性を作成] をクリックします。
[属性] ペインで、[Geography Key] をクリックします。次に、[プロパティ] ウィンドウで AttributeHierarchyOptimizedState プロパティを NotOptimized に設定します。さらに、AttributeHierarchyOrdered プロパティを False に設定し、AttributeHierarchyVisible プロパティを False に設定します。
Reseller ディメンションの Geography Key 属性は、Geography ディメンションを Reseller Sales ファクト テーブルにリンクするためにのみ使用されます。Geography Key 属性は表示しないため、この属性階層の表示を定義する値はありません。また、この属性階層の並べ替えや最適化を行っても、処理パフォーマンスを低下させるだけです。しかし、2 つのディメンション間を結ぶリンクとしてのみ機能するように、この属性を有効にする必要があります。
Analysis Services Tutorial キューブのキューブ デザイナに切り替え、[ディメンションの使用法] タブをクリックします。次に、Reseller Sales メジャー グループと Geography キューブ ディメンションが交差する位置にある参照ボタン ([...]) をクリックします。
[リレーションシップの種類の選択] ボックスの一覧から [参照対象] をクリックします。
[中間ディメンション] ボックスの一覧から [Reseller] を選択します。
[参照ディメンションの属性] ボックスの一覧から [Geography Key] を選択します。次に、[中間ディメンションの属性] ボックスの一覧から [Geography Key] を選択します。
[具体化する] チェック ボックスがオンになっています。これは、MOLAP ディメンションの既定設定です。ディメンション属性のリンクを具体化すると、各行のファクト テーブルおよび参照ディメンション間のリンクの値が具体化され、処理中にディメンションの MOLAP 構造に格納されます。この操作は、処理パフォーマンスやストレージの要件に少しだけ影響しますが、クエリ パフォーマンスを (場合により大幅に) 向上させます。
[OK] をクリックします。
Geography キューブ ディメンションが Reseller Sales メジャー グループにリンクされました。このアイコンは、リレーションシップが参照ディメンションのリレーションシップであることを表します。
[ディメンションの使用法] タブを開き、[ディメンション] の一覧で [Geography] を右クリックし、[名前の変更] をクリックします。
このキューブ ディメンションの名前を Reseller Geography に変更します。
このキューブ ディメンションを Reseller Sales メジャー グループにリンクしたので、以降は同キューブ ディメンションを明示的にキューブ内で使用できます。これにより、ユーザーの混乱を避けることができます。
販売店の売上と地域の関連付け
販売店の売上と地域を関連付けるには
[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。
配置が正常に完了したら、Analysis Services Tutorial キューブのキューブ デザイナで [ブラウザ] タブをクリックし、[再接続] ボタンをクリックします。
メタデータ ペインで [Reseller Geography] を展開し、[Geographies] を右クリックして、[行領域に追加] をクリックします。
次の図を見ると、Reseller Sales-Sales Amount メジャーが、Geographies ユーザー定義階層の Country-Region 属性によって正しく多次元化されたことがわかります。