メジャーおよびメジャー グループ

メジャーは、集計できる定量化可能なデータ (通常は数値データ) を含んでいる列を表します。通常、メジャーはファクト テーブルの列にマップされています。

多次元式による変更時に、ファクト テーブルの列に基づいてメジャーの値を定義するためにメジャー式を使用することもできます。メジャー式ではメジャー値の重み付けが可能になります。たとえば、通貨換算を使用して、換算レートで売上メジャーの重み付けを行うことができます。

ディメンション テーブルの属性列は、メジャーの定義に使用できますが、これらのメジャーの集計動作は、通常、準加法または非加法です。準加法の動作の詳細については、「準加法の動作の定義」を参照してください。

多次元式 (MDX) を使用して計算されるメンバとしてメジャーを定義し、キューブ内の他のメジャーに基づいてメジャーの計算値を算出することもできます。計算されるメンバによって、Analysis Services のキューブに柔軟性と分析機能が追加されます。計算の詳細については、「計算」および「計算の定義と構成」を参照してください。

メジャー グループ

キューブでは、メジャーは基になるファクト テーブルによってメジャー グループにグループ化されます。メジャー グループは、ディメンションをメジャーに関連付けるために使用されます。メジャー グループは、集計動作として個別のカウントを持っているメジャーにも使用されます。各個別のカウント メジャーをそれぞれ独自のメジャー グループに配置すると、集計処理が最適化されます。

次の図は、FactSalesQuota ファクト テーブルと、このテーブルに関連する DimTime および DimEmployee という 2 つのディメンション テーブルを表しています。

2 つのディメンション テーブルを持つ FactSalesQuota テーブル

FactSalesQuota ファクト テーブルによって Adventure Works キューブの Sales Quotas メジャー グループが定義され、DimTime ディメンション テーブルと DimEmployee ディメンション テーブルによって Adventure Works DW サンプル Analysis Services プロジェクトの時間ディメンションと従業員ディメンションが定義されています。

このファクト テーブルには、2 つの基本的な種類の列 (属性列とメジャー列) があります。属性列は、ディメンション テーブルに外部キー リレーションシップを作成するために使用されます。これにより、ディメンション テーブルに含まれるデータに基づいてメジャー列の定量化可能なデータが編成されます。属性列は、ファクト テーブルとそのメジャー グループの粒度を定義するためにも使用されます。メジャー列によって、メジャー グループに含まれるメジャーが定義されます。FactSalesQuota ファクト テーブルでは、Sales Amount Quota メジャーを定義するために SalesAmountQuota 列が使用されています。このメジャーは、Sales Quotas メジャー グループに含まれ、時間ディメンションおよび従業員ディメンションによって編成されています。

粒度

粒度とは、ファクト テーブルによってサポートされている詳細度のレベルです。たとえば、FactSalesQuota ファクト テーブルには、EmployeeKey 主キー列に DimEmployee テーブルとの外部キー リレーションシップがあります。つまり、FactSalesQuota テーブルの各レコードは 1 人の従業員に関連付けられています。したがって、従業員ディメンションから見たメジャー グループの粒度は個別の従業員レベルです。

メジャー グループの粒度は、メジャー グループを表示するためのディメンションの最も低いレベルより詳細なレベルには設定できません。ただし、属性を追加して、粒度を荒くすることは可能です。たとえば、FactSalesQuota ファクト テーブルでは、DimTime テーブルとのリレーションシップの粒度を確立するために TimeKeyCalendarYear、および CalendarQuarter の 3 列が使用されています。結果として、時間ディメンションから見たメジャー グループの粒度は、時間ディメンションの最も低いレベルである "日" ではなく、カレンダー四半期になります。

キューブ デザイナの [ディメンションの使用法] タブを使用すると、特定のディメンションに関してメジャー グループの粒度を指定できます。ディメンションのリレーションシップの詳細については、「ディメンション リレーションシップ」を参照してください。

集計関数

メジャー グループのメジャーを編成するためにディメンションを使用する場合、メジャーはそのディメンションに含まれる階層に沿って集約されます。この集約動作は、メジャーに指定される集計関数に依存します。たとえば、従業員ディメンションには従業員部門という階層があります。このレベル構造は、次の図のようになります。

従業員部門階層のレベル構造

FactSalesQuota ファクト テーブルの各レコードは、EmployeeKey 列との外部キー リレーションシップによって、DimEmployee ディメンション テーブルの単一レコードと直接関連付けられています。したがって、Sales Amount Quota メジャーの各値は、Employee Department 階層の Full Name レベルで単一のリーフ メンバに関連付けられ、ファクト テーブルから直接読み込むことができます。ただし、Full Name より上のレベルのメンバについては、各メンバが複数のレコードを表すため、対応する Sales Amount Quota メジャーの値を直接読み込むことができません。つまり、Title レベルの単一メンバには複数の従業員が関連付けられており、したがって Full Name レベルのメンバも複数である可能性があります。これらの非リーフ メンバのメジャー値は、データ ソースから直接読み込まれず、階層のそれ以下のレベルのメンバから集計されます。

すべてのメジャーがファクト テーブルの列に格納されている値から直接派生するわけではありません。たとえば、Adventure Works DW サンプル Analysis Services プロジェクトの Adventure Works キューブの Sales Quota メジャー グループで定義されている Sales Person Count メジャーは、FactSalesQuota ファクト テーブルの EmployeeKey 列にある一意の値のカウント (または個別のカウント) に基づいています。

各メジャーの集計動作は、そのメジャーに関連付けられている集計関数によって決まります。集計関数の詳細については、「準加法の動作の定義」を参照してください。

参照

概念

メジャーの定義と構成
メジャー グループの定義と構成
準加法の動作の定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手