レッスン 5-4 - メジャー グループ内でのディメンション粒度の定義
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
ファクト データは、利用目的ごとに異なる粒度でディメンションを作成しなければならない場合があります。 たとえば、販売店やインターネットでの売上データを日ごとに記録する一方で、販売量は月ごとまたは四半期ごとに記録することが考えられます。 このようなシナリオでは、ファクト テーブルごとに異なる詳細度を、時間のディメンションに設定します。 この異なる粒度を持つ時間ディメンションとして新しいデータベース ディメンションを定義することもできますが、SQL Server Analysis Servicesを使用する方が簡単です。
既定では、SQL Server Analysis Servicesでは、ディメンションがメジャー グループ内で使用される場合、そのディメンション内のデータのグレインはディメンションのキー属性に基づいています。 たとえば、あるメジャー グループに時間のディメンションが存在し、その時間ディメンションの既定の詳細度が日単位である場合は、メジャー グループ内のそのディメンションの既定の詳細度が日単位になります。 このチュートリアルで使用する Internet Sales (インターネット売上) や Reseller Sales (販売店売上) メジャー グループなどのように、既定の詳細度が適切である場合は数多くあります。 しかし、販売量や予算などのメジャー グループに存在するディメンションには、月単位、または四半期単位の詳細度がより適切です。
キューブ ディメンションに既定値以外の詳細度を指定するには、具体的なメジャー グループ内で使用するキューブ ディメンションの "粒度" 属性を変更します。この操作は、キューブ デザイナーの [ディメンションの使用法] タブで行います。 指定のメジャー グループのディメンションの詳細度を、そのディメンションのキー属性以外の属性に変更する場合は、メジャー グループ内の他のすべての属性を、新しい "粒度" 属性に関連付ける必要があります (間接的な関連付けも有効です)。 関連付けを行うには、"粒度" 属性として指定した属性と、その他のすべての属性との間に、属性リレーションシップを指定します。 この場合、属性リレーションシップを移動するのではなく、追加の属性リレーションシップを定義します。 "粒度" 属性として指定した属性は、メジャー グループ内のディメンションの残りの属性のキー属性になります。 属性リレーションシップを適切に指定しない場合、このトピックのタスクに示すように、SQL Server Analysis Servicesは値を正しく集計できません。
詳細については、「 ディメンション リレーションシップ」および「 ファクト リレーションシップとファクト リレーションシップのプロパティの定義」を参照してください。
このトピックの実習では、Sales Quotas メジャー グループを追加し、このメジャー グループの Date ディメンションの粒度を月単位 (Month) に設定します。 次に、月属性と他のディメンション属性の間に属性リレーションシップを定義して、SQL Server Analysis Servicesが値を正しく集計できるようにします。
テーブルの追加と Sales Quotas メジャー グループの定義
Adventure Works DW 2019 データ ソース ビューに切り替えます。
[ダイアグラム オーガナイザー] ペイン内を右クリックし、 [新しいダイアグラム]をクリックして、ダイアグラムの名前として「 Sales Quotas」と入力します。
[テーブル]ペインの Employee、 Sales Territory 、および Date テーブルを、 [ダイアグラム] ペインにドラッグします。
[ダイアグラム] ペイン内を右クリックし、 [テーブルの追加と削除] をクリックして、 FactSalesQuota テーブルを [ダイアグラム]ペインに追加します。
Employee テーブルを介して、 SalesTerritory テーブルが FactSalesQuota テーブルに関連付けられます。
FactSalesQuota テーブルの列を確認し、このテーブル内のデータを調べます。
このテーブルのデータの詳細度が四半期単位になっていることがわかります。FactSalesQuota の最も低い詳細レベルが四半期単位ということになります。
データ ソース ビュー デザイナーで、 FactSalesQuota テーブルの FriendlyName プロパティを「 SalesQuotas」に変更します。
SQL Server Analysis Services Tutorial キューブに切り替えて、[キューブ構造] タブをクリックします。
[メジャー] ペイン内を右クリックし、 [新しいメジャー グループ]をクリックします。次に、 [新しいメジャー グループ] ダイアログ ボックスで [SalesQuotas] をクリックし、 [OK]をクリックします。
[メジャー] ペインに Sales Quotas メジャー グループが表示されます。 [ディメンション] ペインを見ると、 Date データベース ディメンションに基づく新しい Date キューブ ディメンションが定義されていることがわかります。 Sales Quotas メジャー グループの基になる FactSalesQuota ファクト テーブルの DateKey 列に関連する既存の時間関連キューブ ディメンションのうち、SQL Server Analysis Servicesが認識されないため、新しい時間関連キューブ ディメンションが定義されます。 時間キューブ ディメンションの設定は、このトピックの別の実習で変更します。
Sales Quotas メジャー グループを展開します。
[メジャー] ペインで、 Sales Amount Quotaをクリックします。次に、[プロパティ] ウィンドウで、 FormatString プロパティの値を Currency に設定します。
[Sales Quotas Count] メジャーを選択します。次に、[プロパティ] ウィンドウで、 FormatString プロパティの値として「 #,# 」と入力します。
Sales Quotas メジャー グループから Calendar Quarter メジャーを削除します。
SQL Server Analysis Services、Calendar Quarter メジャーの基になる列がメジャーを含む列として検出されました。 しかし、このトピックの後の操作で Sales Quotas メジャー グループを Date ディメンションにリンクさせるときは、検出された列および CalendarYear 列の値を手動で割り当てます。
[メジャー] ペインで Sales Quotas メジャー グループを右クリックし、 [新しいメジャー]をクリックします。
[新しいメジャー] ダイアログ ボックスが開き、メジャーの使用法が [合計]である場合に選択できる列が表示されます。
[新しいメジャー] ダイアログ ボックスで、 [使用法] ボックスの一覧から [個別のカウント] をクリックします。 [基になるテーブル] ボックスの一覧で SalesQuotas が選択されていることを確認します。 [基になる列] ボックスの一覧で EmployeeKey をクリックし、 [OK]をクリックします。
Sales Quotas 1という名前の新しいメジャー グループに、メジャーが作成されます。 SQL Serverの個別のカウント メジャーは、処理パフォーマンスを最大化するために、独自のメジャー グループに作成されます。
Employee Key Distinct Count メジャーの Name プロパティの値を Sales Person Countに変更します。次に、 FormatString プロパティの値として「 #,# 」と入力します。
日付別の売上クォータ メジャー グループでメジャーをもう一度参照する
[ビルド] メニューの [Analysis Services Tutorial の配置]をクリックします。
デプロイが正常に完了したら、SQL Server Analysis Services Tutorial キューブの [キューブ] Designerの [ブラウザー] タブをクリックし、[再接続] ボタンをクリックします。
Excel ショートカットをクリックし、 [有効化]をクリックします。
ピボットテーブル フィールド リストで [Sales Quotas] メジャー グループを展開し、 Sales Amount Quota メジャーを値領域にドラッグします。
Sales Territory ディメンションを展開し、 Sales Territories ユーザー定義階層を行ラベルにドラッグします。
次の図に示すように、Sales Territory キューブ ディメンションは、直接的にも間接的にも Fact Sales Quota テーブルには関連付けられていません。
このトピックの次の一連の手順では、Sales Territory キューブ ディメンションと Fact Sales Quota テーブルの間に参照ディメンションのリレーションシップを定義します。
Sales Territories ユーザー階層を行ラベル領域から列ラベル領域に移動します。
ピボットテーブル フィールド リストで Sales Territories ユーザー定義階層を選択し、右側の下矢印をクリックします。
フィルターで [すべて選択] チェック ボックスをクリックしてすべての選択を解除してから、 North Americaだけを選択します。
北米
ピボットテーブル フィールド リストで Dateを展開します。
Date.Fiscal Date ユーザー階層を行ラベルにドラッグします。
ピボットテーブルで、行ラベルの横にある下矢印をクリックします。 FY 2008以外のすべての年をオフにします。
Month レベルの July, 2007 、 August, 2007、 September, 2007メンバーの代わりに、 Month レベルの July 2007 メンバーのみが表示されます。また、 Date レベルでは、31 日全部のメンバーではなく July 1, 2007 メンバーのみが表示されます。 このように表示されるのは、ファクト テーブルの詳細度が四半期単位であり、 Date ディメンションの詳細レベルが日単位であるためです。 この変更は、このトピックの別の実習で行います。
また、月単位および日単位の Sales Amount Quota の値が四半期のそれと同じである $13,733,000.00 になっています。 これは、Sales Quotas メジャー グループのデータの最低詳細レベルが四半期単位になっているためです。 この変更は、レッスン 6 で行います。
次の図は、 Sales Amount Quotaの値を示しています。
Sales Quotas メジャー グループにおけるディメンションの使用法の定義
Employee ディメンションのディメンション デザイナーを開き、 [データ ソース ビュー] ペインで [SalesTerritoryKey] を右クリックし、 [列から新しい属性を作成]をクリックします。
[属性] ペインで、 [SalesTerritoryKey]をクリックします。次に、[プロパティ] ウィンドウで AttributeHierarchyVisible プロパティを False に設定します。さらに、 AttributeHierarchyOptimizedState プロパティを NotOptimizedに設定し、 AttributeHierarchyOrdered プロパティを Falseに設定します。
この属性は、 Sales Territory ディメンションを参照元ディメンションとして Sales Quotas および Sales Quotas 1 メジャー グループにリンクさせる際に使用します。
SQL Server Analysis Services Tutorial キューブのキューブ Designerで、[ディメンション配分状況] タブをクリックし、Sales Quotas および Sales Quotas1 メジャー グループ内のディメンションの使用状況を確認します。
Employee および Date キューブ ディメンションは、通常のリレーションシップを介して Sales Quotas および Sales Quotas 1 メジャー グループにリンクしています。 また、 Sales Territory キューブ ディメンションはどちらのメジャー グループにもリンクしていません。
Sales Territory ディメンションと Sales Quotas メジャー グループの交差部分にあるセルをクリックし、参照ボタン (...) をクリックします。[リレーションシップの定義] ダイアログ ボックスが開きます。
[リレーションシップの種類の選択] ボックスの一覧から [参照対象]をクリックします。
[中間ディメンション] ボックスの一覧から [Employee]を選択します。
[参照ディメンションの属性] ボックスの一覧から [Sales Territory Region]を選択します。
[中間ディメンションの属性] ボックスの一覧から [Sales Territory Key]を選択します (Sales Territory Region 属性のキー列は、SalesTerritoryKey 列です)。
[具体化する] チェック ボックスがオンになっていることを確認します。
[OK] をクリックします。
Sales Territory ディメンションと Sales Quotas 1 メジャー グループの積集合にあるセルをクリックし、参照ボタン (...) をクリックします。[リレーションシップの定義] ダイアログ ボックスが開きます。
[リレーションシップの種類の選択] ボックスの一覧から [参照対象]をクリックします。
[中間ディメンション] ボックスの一覧から [Employee]を選択します。
[参照ディメンションの属性] ボックスの一覧から [Sales Territory Region]を選択します。
[中間ディメンションの属性] ボックスの一覧から [Sales Territory Key]を選択します (Sales Territory Region 属性のキー列は、SalesTerritoryKey 列です)。
[具体化する] チェック ボックスがオンになっていることを確認します。
[OK] をクリックします。
Date キューブ ディメンションを削除します。
時間に関連する 4 つのキューブ ディメンションを用意する代わりに、 Sales Quotas メジャー グループの Order Date キューブ ディメンションを使用します。これが、販売量に対応する日付のディメンションになります。 また、このキューブ ディメンションはキューブ内のプライマリ日付ディメンションにもなります。
[ディメンション] の一覧で、 Order Date キューブ ディメンションの名前を Dateに変更します。
Order Date キューブ ディメンションの名前を Date に変更することにより、同キューブ ディメンションがこのキューブのプライマリ日付ディメンションとしての機能を持っていることを把握しやすくなります。
Sales Quotas メジャー グループと Date ディメンションの積集合にあるセルの参照ボタン (...) をクリックします。
[リレーションシップの定義] ダイアログ ボックスで、 [リレーションシップの種類の選択] ボックスの一覧から [標準] を選択します。
[粒度属性] ボックスの一覧から [Calendar Quarter]を選択します。
非キー属性を粒度属性として選択したため、警告が表示されます。他のすべての属性をメンバー プロパティとして指定し、直接または間接的に粒度属性に関連付ける必要があります。
[リレーションシップの定義] ダイアログ ボックスの [リレーションシップ] 領域で、Date キューブ ディメンションの基となるテーブルから CalendarYear および CalendarQuarter ディメンション列を、Sales Quota メジャー グループの基となるテーブルの CalendarYear および CalendarQuarter 列にそれぞれリンクし、 [OK]をクリックします。
注意
Calendar Quarter が、Sales Quotas メジャー グループの Date キューブ ディメンションの粒度属性として定義されます。しかし、Date 属性は依然として Internet Sales および Reseller Sales メジャー グループの粒度属性です。
前の 4 つの手順を Sales Quotas 1 メジャー グループに対して繰り返します。
Calendar Quarter 属性およびその他の属性間の属性リレーションシップの Date ディメンションへの定義
[日付] ディメンションの [ディメンション] Designerに切り替え、[属性リレーションシップ] タブをクリックします。
Calendar Year は、 Calendar Semester 属性を介して Calendar Quarter にリンクされました。しかし、会計カレンダーの各属性は互いに一対一でリンクしているだけで、 Calendar Quarter 属性にはリンクしていません。したがって、このままでは Sales Quotas メジャー グループにおいて正しく集計されません。
ダイアグラムで、 [Calendar Quarter] 属性を右クリックし、 [新しい属性リレーションシップ]をクリックします。
[属性リレーションシップの作成] ダイアログ ボックスで、 [基になる属性] に [Calendar Quarter]を指定します。 [関連属性] を [Fiscal Quarter]に設定します。
[OK] をクリックします。
Date ディメンションに、1 つまたは複数の重複する属性リレーションシップが含まれており、このことが原因で、非キー属性が粒度属性として使用されている場合にデータの集計ができない可能性があることを警告するメッセージが表示されます。
Month Name 属性と Fiscal Quarter 属性との間の属性リレーションシップを削除します。
[ファイル] メニューの [すべてを保存] をクリックします。
Sales Quota メジャー グループのメジャーの日付順での表示
[ビルド] メニューの [Analysis Services Tutorial の配置]をクリックします。
デプロイが正常に完了したら、SQL Server Analysis Services Tutorial キューブの [キューブ] Designerの [ブラウザー] タブをクリックし、[再接続] をクリックします。
Excel ショートカットをクリックし、 [有効化]をクリックします。
Sales Amount Quota メジャーを値領域にドラッグします。
Sales Territories ユーザー階層を列ラベルにドラッグし、 North Americaでフィルター処理します。
Date.FiscalDate ユーザー階層を行ラベルにドラッグし、ピボットテーブルの [行ラベル] の横の下矢印をクリックします。次に、 [FY 2008]以外のすべてのチェック ボックスをオフにして、2008 年度 (会計年度) だけを表示します。
[OK] をクリックします。
FY 2008、 H1 FY 2008、 Q1 FY 2008の順に展開します。
次の図は、SQL Server Analysis Services Tutorial キューブのピボットテーブルを示しています。Sales Quota メジャー グループは正しくディメンションされています。
会計四半期レベルの各メンバーが、四半期レベルと同じ値になっています。 たとえば、 Q1 FY 2008 では、 Q1 FY 2008 の分の $9,180,000.00 が、その各メンバーの値にもなっています。 このように表示されるのは、ファクト テーブルの詳細度が四半期単位であり、同時に Date ディメンションの詳細レベルも四半期単位であるためです。 レッスン 6 では、四半期ごとの販売量を各月に均等に割り振る方法について学習します。
次のレッスン
参照
ディメンション リレーションシップ
ファクト リレーションシップとファクト リレーションシップのプロパティの定義
データ ソース ビュー デザイナーでのダイアグラムの操作 (Analysis Services)