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

ファクト データは、利用目的ごとに異なる粒度でディメンションを作成しなければならない場合があります。たとえば、販売店やインターネットでの売上データを日ごとに記録する一方で、販売量は月ごとまたは四半期ごとに記録することが考えられます。このようなシナリオでは、ファクト テーブルごとに異なる詳細度を、時間のディメンションに設定します。新しいデータベース ディメンションを定義する場合、このようにさまざまに異なる詳細度を設定して時間のディメンションを定義することもできますが、Microsoft SQL Server 2005 Analysis Services (SSAS) を使用すると、さらに容易にディメンションを定義できます。

メジャー グループでディメンションを使用する場合、SQL Server 2005 Analysis Services の既定では、ディメンションのキー属性に基づいてディメンションの詳細度が決定されます。たとえば、あるメジャー グループに時間のディメンションが存在し、その時間ディメンションの既定の詳細度が日単位である場合は、メジャー グループ内のそのディメンションの既定の詳細度が日単位になります。このチュートリアルで使用する Internet Sales (インターネット売上)Reseller Sales (販売店売上) メジャー グループなどのように、既定の詳細度が適切である場合は数多くあります。しかし、販売量や予算などのメジャー グループに存在するディメンションには、月単位、または四半期単位の詳細度がより適切です。

キューブ ディメンションに既定値以外の詳細度を指定するには、具体的なメジャー グループ内で使用するキューブ ディメンションの "粒度" 属性を変更します。この操作は、キューブ デザイナの [ディメンションの使用法] タブで行います。指定のメジャー グループのディメンションの詳細度を、そのディメンションのキー属性以外の属性に変更する場合は、メジャー グループ内の他のすべての属性を、新しい "粒度" 属性に関連付ける必要があります (間接的な関連付けも有効です)。関連付けを行うには、"粒度" 属性として指定した属性と、その他のすべての属性との間に、属性リレーションショップを指定します。この場合、属性リレーションシップを移動するのではなく、追加の属性リレーションシップを定義します。"粒度" 属性として指定した属性は、メジャー グループ内のディメンションの残りの属性のキー属性になります。属性リレーションシップを適切に指定しないと、Analysis Services は値を正しく集計できません。これについては、このトピックの実習で確認します。

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

このトピックの実習では、Sales Quotas メジャー グループを追加し、このメジャー グループの Time ディメンションの粒度を月単位 (Month) に設定します。次に、Analysis Services が値を適切に集計できるよう、Month 属性とその他の属性との間に属性リレーションシップを定義します。

テーブルの追加と Sales Quotas メジャー グループの定義

テーブルを追加し、Sales Quotas メジャー グループを定義するには

  1. Adventure Works DW データ ソース ビューのデータ ソース ビュー デザイナに切り替えます。

  2. [ダイアグラム オーガナイザ] ペイン内を右クリックし、[新しいダイアグラム] をクリックします。新しいダイアグラムに「Sales Quotas」という名前を付けます。詳細については、「データ ソース ビューでのダイアグラムの操作 (Analysis Services)」を参照してください。

  3. [テーブル] ペインの EmployeeSales Territory、および Time テーブルを、ダイアグラム ペインにドラッグします。

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

    Employee テーブルを介して、SalesTerritory テーブルが FactSalesQuota テーブルに関連付けられます。

  5. FactSalesQuota テーブルの列を確認し、このテーブル内のデータを調べます。

    このテーブルのデータの詳細度が四半期単位になっていることがわかります。FactSalesQuota の最も低い詳細レベルが四半期単位ということになります。

  6. データ ソース ビュー デザイナで、FactSalesQuota テーブルの FriendlyName プロパティを「SalesQuotas」に変更します。

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

  8. [メジャー] ペイン内を右クリックし、[新しいメジャー グループ] をクリックします。次に、[新しいメジャー グループ] ダイアログ ボックスで [SalesQuotas] をクリックし、[OK] をクリックします。

    [メジャー] ペインに Sales Quotas メジャー グループが表示されます。[ディメンション] ペインを見ると、Time データベース ディメンションに基づく新しい Time キューブ ディメンションが定義されていることがわかります。新しい時間キューブ ディメンションが定義されてしまうのは、Sales Quotas メジャー グループの基となる FactSalesQuota ファクト テーブルの TimeKey 列に関連付けられている時間キューブ ディメンションがどのディメンションなのかを、Analysis Services に指定していないためです。時間キューブ ディメンションの設定は、このトピックの別の実習で変更します。

  9. Sales Quotas メジャー グループを展開します。

    3 つの新しいメジャーが定義されています。

  10. [メジャー] ペインで、Sales Amount Quota をクリックします。次に、[プロパティ] ウィンドウで、FormatString プロパティの値を Currency に設定します。

  11. Sales Quotas Count メジャーをクリックします。次に、[プロパティ] ウィンドウで、FormatString プロパティの値を #,# に設定します。

  12. Sales Quotas メジャー グループから Calendar Quarter メジャーを削除します。

    Calendar Quarter メジャーの基となる列 (この列には他のメジャーも含まれている) は、Analysis Services によって自動的に検出されました。しかし、このトピックの後の操作で Sales Quotas メジャー グループを Time ディメンションにリンクさせるときは、検出された列および CalendarYear 列の値を手動で割り当てます。

  13. [メジャー] ペインで Sales Quotas メジャー グループを右クリックし、[新しいメジャー] をクリックします。詳細については、「メジャーの定義と構成」を参照してください。

    [新しいメジャー] ダイアログ ボックスが開き、メジャーの使用法が [合計] である場合に選択できる列が表示されます。

  14. [新しいメジャー] ダイアログ ボックスで、[使用法] ボックスの一覧から [個別のカウント] をクリックします。[基になるテーブル] ボックスの一覧で SalesQuotas が選択されていることを確認します。[基になる列] ボックスの一覧で EmployeeKey をクリックし、[OK] をクリックします。

    Sales Quotas 1 という名前の新しいメジャー グループに、メジャーが作成されます。処理速度を最大限に向上させるため、Microsoft SQL Server 2005 の "個別のカウント" メジャーのみは専用のメジャー グループに作成されます。

  15. Employee Key Distinct Count メジャーの Name プロパティの値を「Sales Person Count」に変更します。次に、FormatString の値を #,# に設定します。

Sales Quota メジャー グループのメジャーの時間順での表示

Sales Quota メジャー グループのメジャーを時間順に表示するには

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

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

  3. データ ペインからすべての階層とメジャーを消去し、次に フィルタ ペインからディメンション メンバを消去します。

  4. メタデータ ペインで、[Sales Quotas] メジャー グループを展開し、このデータ領域に Sales Amount Quota メジャーを追加します。

  5. Sales Territory ディメンションの Sales Territory ユーザー定義階層を列領域に追加します。

    次の図に示すように、Sales Territory キューブ ディメンションは、直接的にも間接的にも Fact Sales Quota テーブルには関連付けられていません。

    Sales Territory キューブ ディメンション

    このトピックの次の実習では、Sales Territory キューブ ディメンションと Fact Sales Quota テーブルの間に参照ディメンションのリレーションシップを定義します。

  6. データ ペインで、Sales Territory Group の隣の下矢印をクリックし、North America を除くすべてのチェック ボックスをオフにします。Sales Territory Group に表示されるディメンション メンバが、North America のメンバに変わります。

  7. メタデータ ペインで Time を展開し、次に Fiscal を展開します。

  8. Time.Fiscal Time ユーザー階層を行領域に追加します。次に、データ ペインで Fiscal Year の隣の下矢印をクリックし、FY 2004 を除くすべてのチェック ボックスをオフにします。これにより、2004 年度 (会計年度) のメンバのみが表示されます。

  9. メタデータ ペインで、FY 2004H1 FY 2004Q1 FY 2004July 2003 の順に展開します。

    Month レベルの July, 2003August, 2003September, 2003 メンバの代わりに、Month レベルの July 2003 メンバのみが表示されます。また、Date レベルでは、31 日全部のメンバではなく July 1, 2003 メンバのみが表示されます。このように表示されるのは、ファクト テーブルの詳細度が四半期単位であり、Time ディメンションの詳細レベルが日単位であるためです。この変更は、このトピックの別の実習で行います。

    また、月単位および日単位の Sales Amount Quota の値が四半期のそれと同じである $13,733,000.00 になっています。これは、Sales Quotas メジャー グループのデータの最低詳細レベルが四半期単位になっているためです。この変更は、レッスン 6 で行います。

    次の図は、Sales Amount Quota の値を示しています。

    Sales Amount Quota の値

Sales Quotas メジャー グループにおけるディメンションの使用法の定義

Sales Quotas メジャー グループにディメンションの使用法を定義するには

  1. Employee ディメンションのディメンション デザイナを開き、SalesTerritoryKey 列に基づく SalesTerritoryKey 属性を Employee テーブルに追加します。この属性は、最適化も並べ替えもされていない非表示の属性です。

    この属性は、Sales Territory ディメンションを参照元ディメンションとして Sales Quotas および Sales Quotas 1 メジャー グループにリンクさせる際に使用します。

  2. Analysis Services Tutorial キューブのキューブ デザイナで、[ディメンションの使用法] タブをクリックします。次に、Sales Quotas および Sales Quotas 1 メジャー グループでのディメンションの使用法を確認します。

    Employee および Time キューブ ディメンションは、通常のリレーションシップを介して Sales Quotas および Sales Quotas 1 メジャー グループにリンクしています。また、Sales Territory キューブ ディメンションはどちらのメジャー グループにもリンクしていません。

  3. Sales Territory ディメンションと Sales Quotas メジャー グループとの間の具体化されたリレーションシップを定義します。そのためには、中間ディメンションとして Employee を、参照ディメンション属性として Sales Territory Region を、中間ディメンション属性として SalesTerritoryKey を指定します (Sales Territory Region 属性のキー列は、SalesTerritoryKey 列です)。

  4. 前の手順を Sales Quotas 1 メジャー グループに対して繰り返します。

  5. Time キューブ ディメンションを削除します。

    時間に関連する 4 つのキューブ ディメンションを用意する代わりに、Sales Quotas メジャー グループの Order Date キューブ ディメンションを使用します。これが、販売量に対応する日付のディメンションになります。また、このキューブ ディメンションはキューブ内のプライマリ日付ディメンションにもなります。

  6. ディメンションの一覧で、Time (Order Date) キューブの名前を「Time (Date)」に変更します。

    Order Date キューブ ディメンションの名前を Date に変更することにより、同キューブ ディメンションがこのキューブのプライマリ日付ディメンションとしての機能を持っていることを把握しやすくなります。

  7. Sales Quotas メジャー グループと Time (Date) が交差する場所のセルで、参照ボタン ([...]) をクリックします。

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

  9. [粒度属性] ボックスの一覧から [Calendar Quarter] を選択します。

    非キー属性を粒度属性として選択したため、警告が表示されます。他のすべての属性をメンバ プロパティとして指定し、直接または間接的に粒度属性に関連付ける必要があります。

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

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

  10. [リレーションシップの定義] ダイアログ ボックスの [リレーションシップ] 領域で、Time (Date) ディメンションの基となるテーブルから CalendarYear および CalendarQuarter ディメンションを、Sales Quota メジャー グループの基となるテーブルの CalendarYear および CalendarQuarter 列にそれぞれリンクし、[OK] をクリックします。

    ms166573.note(ja-jp,SQL.90).gifメモ :
    Calendar Quarter が、Sales Quotas メジャー グループの Time (Date) キューブ ディメンションの粒度属性として定義されます。しかし、Date 属性は依然として Internet Sales および Reseller Sales メジャー グループの粒度属性です。
  11. 前の 4 つの手順を Sales Quotas 1 メジャー グループに対して繰り返します。

    次の図は、Sales Quotas および Sales Quotas 1 の両方のメジャー グループにおいて、Calendar Quarter 属性が Time (Date) キューブ ディメンションの粒度属性として定義されていることを示します。

    粒度属性として定義されている Calendar Quarter

Calendar Quarter 属性およびその他の属性間の属性リレーションシップの Time ディメンションへの定義

Calendar Quarter 属性とその他の属性の間の属性リレーションシップを Time ディメンションに定義するには

  1. Time ディメンションのディメンション デザイナに切り替え、[ディメンション構造] をクリックします。

  2. [属性] ペインで次の属性を展開します。

    • Calendar Quarter
    • Calendar Semester
    • Fiscal Quarter
    • Fiscal Semester

    Calendar Year は、Calendar Semester 属性を介して Calendar Quarter にリンクされました。しかし、会計カレンダーの各属性は互いに一対一でリンクしているだけで、Calendar Quarter 属性にはリンクしていません。したがって、このままでは Sales Quotas メジャー グループにおいて正しく集計されません。

  3. Fiscal Quarter 属性を、Calendar Quarter 属性の <新しい属性リレーションシップ> タグにドラッグします。

    Time ディメンションに、1 つまたは複数の重複する属性リレーションシップが含まれており、このことが原因で、非キー属性が粒度属性として使用されている場合にデータの集計ができない可能性があることを警告するメッセージが表示されます。さらに、Fiscal Quarter 属性と Month Name 属性のリレーションシップは不要であることを示すメッセージが続きます。

  4. Fiscal Quarter 属性と Month Name 属性のリレーションシップを削除します。

    前の警告メッセージが表示されます。

Sales Quota メジャー グループのメジャーの時間順での表示

Sales Quota メジャー グループのメジャーを時間順に表示するには

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

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

    参照されているディメンションとして Sales Territory ディメンションが定義されたので、Sales Amount Quota メジャーが、Sales Territory によって正しく多次元化されました。

  3. Date.FiscalTime ユーザー階層を、Date キューブ ディメンションの行領域に追加します。次に、Fiscal Year の隣の下矢印をクリックし、FY 2004 を除くすべてのチェック ボックスをオフにします。これにより、2004 年度 (会計年度) のメンバのみが表示されます。

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

  5. FY 2004H1 FY 2004Q1 FY 2004 の順に展開します。

    Sales Quotas メジャー グループの各メジャーが適切に関連付けられています。また、会計四半期レベルの各メンバが表示され、各メンバの値は四半期レベルの値になります。このように表示されるのは、ファクト テーブルの詳細度が四半期単位であり、同時に Time ディメンションの詳細レベルも四半期単位であるためです。レッスン 6 では、四半期ごとの販売量を各月に均等に割り振る方法について学習します。

    次の図は、Sales Quotas メジャー グループが適切に関連付けられた、Analysis Services Tutorial キューブのキューブ デザイナです。

    適切にディメンションが指定された Sales Quota メジャー グループ

ms166573.note(ja-jp,SQL.90).gifメモ :
レッスン 5 までの操作内容が反映されたプロジェクトを使用する場合は、サンプルの最新版をダウンロードしてインストールしてください。詳細については、「サンプルのインストール」の「サンプルの最新版の入手」を参照してください。

次のレッスン

レッスン 6 : 計算の定義

参照

その他の技術情報

ディメンション リレーションシップ
標準リレーションシップおよび標準リレーションシップ プロパティの定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手