多次元モデル内のメジャーおよびメジャー グループの作成
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
メジャー は、合計値、度数、最小値、最大値、平均値、または自ら作成したカスタム MDX 式のように、数値のデータ値を集計したものです。 メジャー グループ は、1 つ以上のメジャーに対応するコンテナーです。 すべてのメジャーは、メジャーが 1 つしかない場合を含め、1 つのメジャー グループ内に存在します。 キューブには、少なくとも 1 つのメジャーとメジャー グループが必要です。
このトピックのセクションは次のとおりです。
メジャーを作成するための方法
メジャーは、キューブの静的な要素になることができ、設計時に作成され、キューブがアクセスされるときは常に存在します。 ただし、多次元式 (MDX) を使用して 計算されるメンバー としてメジャーを定義し、キューブ内の他のメジャーに基づいてメジャーの計算値を算出することもできます。 計算されるメンバーは、セッションまたはユーザーにスコープすることができます。
メジャーまたはメジャー グループを作成するには、次の方法のいずれかを使用します。
アプローチ | 説明 |
---|---|
キューブ ウィザード | SQL Server Data Toolsでキューブ ウィザードを実行してキューブを作成します。 ソリューション エクスプローラーで [キューブ] を右クリックし、 [新しいキューブ]を選択します。 これらの手順に関するヘルプが必要な場合は、「 多次元モデリング (Adventure Works チュートリアル)」 を参照してください。 既存のデータ ウェアハウスのテーブルに基づいてキューブを作成すると、メジャーおよびメジャー グループの定義がキューブの作成プロセスの一部として具体化されます。 ウィザードで、キューブ内のメジャーとメジャー グループのオブジェクトのベースとして使用するファクトとファクト テーブルを選択します。 |
[新しいメジャー] ダイアログ | キューブが既にSQL Server Data Toolsに存在する場合は、ソリューション エクスプローラーのキューブ名をダブルクリックしてキューブ Designerで開きます。 [メジャー] ペインで、ソース テーブル、列、集計の型を指定し、最上位のノードを右クリックして新しいメジャー グループまたは新しいメジャーを作成します。 この方法を使用するには、構築済みの関数の固定リストから集計の方法を選択することが必要です。 より一般的に使用されている集計の説明については、「 Use Aggregate Functions 」を参照してください。 |
計算されるメンバー | 計算されるメンバーは、作成のタイミングと方法を制御できるため、SQL Server Analysis Servicesのキューブに柔軟性と分析機能が追加されます。 ユーザー セッションの期間中、または調査の一部としての Management Studio では、一時的にのみメジャーが必要になることがあります。 SQL Server Data Toolsで、[計算] タブを開き、新しい計算メンバーを作成します。 メジャーを MDX 式のベースにする場合は、この方法を選択します。 詳細については、 MDX でのメジャーの構築、 計算、 多次元モデルでの計算 、 および MDX スクリプトの基礎 (Analysis Services) に関するトピックを参照してください。 |
MDX または XMLA | 計算される新しいメジャーを含めるには、SQL Server Management Studio で、MDX または XMLA を実行してデータベースを変更します。 この方法は、ソリューションをサーバーに配置した後の、データのアドホック テストに役立ちます。 「 Document and Script an Analysis Services Database」を参照してください。 |
メジャーのコンポーネント
メジャーは、プロパティを持つオブジェクトです。 メジャーは、名前だけでなく、集計の種類と、ソース列またはデータがあるメジャーの読み込みに使用する式が必要です。 メジャーの定義を変更するには、プロパティを設定します。
属性 | 説明 |
---|---|
source | ほとんどのメジャーは、AdventureWorks データ ウェアハウス内の Internet Sales (インターネット売上) や Reseller Sales (販売店売上) テーブルにある Sales Amount 列など、外部データ ウェアハウス内のファクト テーブルの数値列に由来していますが、定義する計算全体に基づいてメジャーを新規作成することもできます。 ディメンション テーブルの属性列は、メジャーの定義に使用できますが、これらのメジャーの集計動作は、通常、準加法または非加法です。 準加法の動作の詳細については、「 準加法の動作の定義」を参照してください。 |
aggregation (集約) | 既定では、各ディメンションに従ってメジャーが集計されます。 ただし、 AggregateFunction プロパティを使用するとこの動作を変更できます。 一覧については Use Aggregate Functions を参照してください。 |
Properties | プロパティの追加説明については Configure Measure Properties を参照してください。 |
ファクトとファクト テーブルでのメジャーとメジャー グループのモデリング
ウィザードを実行する前に、メジャーの定義の背後にあるモデリングの原則を理解するのに役立ちます。
メジャーとメジャー グループは、外部データ ウェアハウスにあるファクトとファクト テーブルを表す多次元オブジェクトです。 ほとんどの場合、メジャーとメジャー グループはデータ ソース ビュー内のオブジェクトに基づくものになります。このオブジェクトは基になるデータ ウェアハウスから作成されます。
次の図は、 FactSalesQuota ファクト テーブルと、このテーブルに関連する DimTime および DimEmployeeという 2 つのディメンション テーブルを表しています。 Adventure Works のサンプル キューブにおいて、これらのテーブルは Sales Quotas メジャー グループの基礎として、および時間と従業員のディメンションの基礎として使用されます。
ファクト テーブルには、属性列とメジャー列という 2 つの種類の列が含まれています。
属性列は、ディメンション テーブルに外部キー リレーションシップを作成するために使用されます。これにより、ディメンション テーブルに含まれるデータに基づいてメジャー列の定量化可能なデータが編成されます。 属性列は、ファクト テーブルとそのメジャー グループの粒度を定義するためにも使用されます。
メジャー列によって、メジャー グループに含まれるメジャーが定義されます。
キューブ ウィザードを実行すると、外部キーがフィルター処理されます。選択する残りの列の一覧には、メジャー列と、外部キーとして識別されない属性列が表示されます。 FactSalesQuota の例では、ウィザードは SalesAmountQuota に加えて CalendarYear と CalendarQuarter を提供します。 多次元モデルの場合、実行可能なメジャーは SalesAmountQuota メジャー列だけとなります。 日付に基づくその他の列は、各クォータの金額を修飾するために存在します。 キューブ ウィザードのメジャーの一覧から他の列、つまり CalendarYear と CalendarQuarterを除外する (または後ほど、デザイナーでメジャー グループから削除する) 必要があります。
この説明から除外すべき点は、ウィザードによって提供されるすべての列がメジャーとして役立つわけではないということです。 どの列をメジャーとして使用するかを決定する際は、データの理解とデータの使用方法を信頼して決定してください。 データを調べるには、データ ソース ビュー内のテーブルを右クリックしてください。メジャーとして使用する列を特定するのに役立ちます。 詳細については、「 データ ソース ビュー (Analysis Services) でのデータの探索」 を参照してください。
注意
すべてのメジャーがファクト テーブルの列に格納されている値から直接派生するわけではありません。 たとえば、Adventure Works DW サンプル キューブの Sales Quota メジャー グループに定義されている Sales Person Count メジャーは、 FactSalesQuota ファクト テーブルの EmployeeKey 列にある一意の値のカウント (または個別のカウント) に実際に基づいています。
メジャー グループの粒度
メジャー グループには、ファクト テーブルによってサポートされている詳細のレベルを参照する、関連付けられている粒度があります。 粒度は、ディメンションへの外部キーのリレーションシップを介して設定されます。
たとえば、 FactSalesQuota ファクト テーブルには、 DimEmployee テーブルとの外部キーのリレーションシップがあり、 FactSalesQuota テーブルの各レコードは、1 人の従業員と関係付けられます。こうして、Employee ディメンションから表示されたメジャー グループの粒度は個々の従業員のレベルとなります。
メジャー グループの粒度は、メジャー グループを表示するためのディメンションの最も低いレベルより詳細なレベルには設定できません。ただし、属性を追加して、粒度を荒くすることは可能です。 たとえば、 FactSalesQuota ファクト テーブルでは、 DimTimeテーブルとのリレーションシップの粒度を確立するために TimeKey、 CalendarYear、および CalendarQuarter の 3 列が使用されています。 結果として、時間ディメンションから見たメジャー グループの粒度は、時間ディメンションの最も低いレベルである "日" ではなく、カレンダー四半期になります。
キューブ デザイナーの [ディメンションの使用法] タブを使用すると、特定のディメンションに関してメジャー グループの粒度を指定できます。 ディメンションのリレーションシップの詳細については、「 Dimension Relationships」を参照してください。