メジャーおよびメジャー グループの作成
メジャーは、合計、カウント、最小値、最大値、平均値、またはユーザー作成のカスタム MDX 式などの数値データ値の集計です。メジャー グループは、1 つ以上のメジャーのコンテナーです。すべてのメジャーは、メジャーが 1 つしかない場合を含め、1 つのメジャー グループ内に存在します。キューブには、少なくとも 1 つのメジャーとメジャー グループが必要です。
このトピックのセクションは次のとおりです。
メジャーを作成するための方法
メジャーのコンポーネント
ファクトおよびファクト テーブルにおけるメジャーとメジャー グループのモデリング
メジャー グループの粒度
メジャーを作成するための方法
メジャーは、設計時に作成したキューブの静的要素として、対象キューブにアクセスするときに必ず存在するようにできます。ただし、MDX を使用して計算されるメンバーとしてメジャーを定義し、キューブ内の他のメジャーに基づいてメジャーの計算値を算出することもできます。計算されるメンバーのスコープは、セッションまたはユーザーにすることができます。
メジャーまたはメジャー グループを作成するには、次のいずれかの方法を使用します。
キューブ ウィザード |
SQL Server データ ツール (SSDT) でキューブ ウィザードを実行して、キューブを作成します。 ソリューション エクスプローラーで [キューブ] を右クリックし、[新しいキューブ] を選択します。これらの手順の詳細については、「多次元モデリング (Adventure Works チュートリアル)」をご覧ください。 既存のデータ ウェアハウスのテーブルに基づいてキューブを作成する場合、メジャーおよびメジャー グループの定義をキューブの作成プロセスの一部として具体化します。ウィザードで、キューブ内のメジャー オブジェクトとメジャー グループ オブジェクトの基礎として使用するファクトおよびファクト テーブルを選択します。 |
[新しいメジャー] ダイアログ |
キューブが SQL Server データ ツール (SSDT) に既に存在する場合、ソリューション エクスプローラーでキューブ名をダブルクリックしてキューブ デザイナーで開きます。[メジャー] ペインで、最上位ノードを右クリックし、ソース テーブル、列、集計の種類を指定して新しいメジャー グループまたはメジャーを作成します。この方法を使用するには、作成済みの関数リストから、集計の方法を選択することが必要です。一般的に使用される集計の詳細については、「集計関数の使用」を参照してください。 |
計算されるメンバー |
計算されるメンバーを使用すると、ユーザーが作成のタイミングと方法を制御できるので Analysis Services のキューブに対して柔軟性と分析機能が加わります。場合によってはメジャーが必要となるのは一時的で、ユーザー セッションの間や、調査の一部として Management Studio でのみ必要ということがあります。 SQL Server データ ツール (SSDT) で、[計算] タブを開き、新しい計算されるメンバーを作成します。 MDX 式に基づいたメジャーを作成する場合は、この手法を選択します。詳細については、次のトピックを参照してください。「MDX 内でのメジャーの作成」、「計算」、「多次元モデルの計算」、「MDX スクリプティングの基礎 (Analysis Services)」。 |
MDX または XMLA |
SQL Server Management Studio で、MDX または XMLA を実行し、データベースを変更して新しい計算されるメジャーを含めることができます。この方法は、ソリューションをサーバーに配置した後に、データのアドホック テストに便利です。「Analysis Services データベースのドキュメントとスクリプトの作成」を参照してください。 |
メジャーのコンポーネント
メジャーは、プロパティを持つオブジェクトです。メジャーには、名前に加え、集計の種類と、データが含まれるメジャーの読み込みに使用するソース列または式が必要です。プロパティを設定すると、メジャーの定義を変更できます。
ソース (source) |
ほとんどのメジャーは外部のデータ ウェアハウスのファクト テーブルの数値列に基づきます。たとえば、AdventureWorks データ ウェアハウスの Internet Sales テーブルおよび Reseller Sales テーブル内の Sales Amount 列などがあります。ただし、自分で定義した計算に基づくまったく新しいメジャーを作成することも可能です。 ディメンション テーブルの属性列は、メジャーの定義に使用できますが、これらのメジャーの集計動作は、通常、準加法または非加法です。準加法の動作の詳細については、「準加法の動作の定義」を参照してください。 |
集計 (aggregation) |
既定では、各ディメンションに従ってメジャーが集計されます。ただし、AggregateFunction プロパティを使用するとこの動作を変更できます。一覧については、「集計関数の使用」を参照してください。 |
プロパティ |
プロパティの詳しい説明に関しては、「メジャーのプロパティの構成」を参照してください。 |
ファクトおよびファクト テーブルにおけるメジャーとメジャー グループのモデリング
ウィザードを実行する前に、メジャーの定義の背後にあるモデリングの原則を理解すると役立ちます。
メジャーおよびメジャー グループは、外部データ ウェアハウス内のファクトおよびファクト テーブルを表す多次元オブジェクトです。ほとんどの場合、メジ���ーおよびメジャー グループは、データ ソース ビュー内のオブジェクトに基づき、それらのオブジェクトは基になるデータ ウェアハウスから作成されます。
次の図は、FactSalesQuota ファクト テーブルと、このテーブルに関連する DimTime および DimEmployee という 2 つのディメンション テーブルを表しています。Adventure Works サンプル キューブでは、これらのテーブルを Sales Quotas メジャー グループおよび Time ディメンションと Employee ディメンションの基礎として使用します。
ファクト テーブルには、属性列とメジャー列という 2 つの種類の列が含まれています。
属性列は、ディメンション テーブルに外部キー リレーションシップを作成するために使用されます。これにより、ディメンション テーブルに含まれるデータに基づいてメジャー列の定量化可能なデータが編成されます。属性列は、ファクト テーブルとそのメジャー グループの粒度を定義するためにも使用されます。
メジャー列によって、メジャー グループに含まれるメジャーが定義されます。
キューブ ウィザードを実行すると、外部キーはフィルターで除外されます。選択対象の残りの列の一覧には、メジャー列、および外部キーとして識別されていない属性列が表示されます。FactSalesQuote の例では、CalendarYear、CalendarQuarter、および SalesAmountQuota がウィザードにより表示されます。多次元モデルの場合、実行可能なメジャーは 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 列が使用されています。結果として、時間ディメンションから見たメジャー グループの粒度は、時間ディメンションの最も低いレベルである "日" ではなく、カレンダー四半期になります。
キューブ デザイナーの [ディメンションの使用法] タブを使用すると、特定のディメンションに関してメジャー グループの粒度を指定できます。ディメンションのリレーションシップの詳細については、「ディメンション リレーションシップ」を参照してください。