ユーザー階層
ユーザー定義階層は、ディメンションのメンバを階層構造にまとめ、キューブのナビゲーション パスを提供するために MicrosoftSQL ServerAnalysis Services で使用される属性のユーザー定義階層です。たとえば、次のテーブルでは、時間ディメンションにディメンション テーブルを定義します。ディメンション テーブルは、年、四半期、月という 3 つの属性をサポートしています。
年 |
四半期 |
月 |
---|---|---|
1999 |
第 1 四半期 |
1 月 |
1999 |
第 1 四半期 |
2 月 |
1999 |
第 1 四半期 |
3 月 |
1999 |
第 2 四半期 |
4 月 |
1999 |
第 2 四半期 |
5 月 |
1999 |
第 2 四半期 |
6 月 |
1999 |
第 3 四半期 |
7 月 |
1999 |
第 3 四半期 |
8 月 |
1999 |
第 3 四半期 |
9 月 |
1999 |
第 4 四半期 |
10 月 |
1999 |
第 4 四半期 |
11 月 |
1999 |
第 4 四半期 |
12 月 |
年、四半期、月の各属性は、時間ディメンションに Calendar というユーザー定義階層を作成するために使用されます。次の図は、Calendar ディメンション (標準のディメンション) のレベルとメンバの関係を示しています。
注意 |
---|
2 つのレベルで構成される既定の属性階層以外の階層はすべて、ユーザー定義階層と呼ばれます。属性階層の詳細については、「属性と属性階層」を参照してください。 |
メンバ構造
親子階層の例外を除いて、階層内のメンバの位置は、階層定義の属性の順序に制御されます。階層定義内の各属性によって階層のレベルが作成されます。レベル内のメンバの位置は、レベルの作成に使用された属性の順序によって決まります。ユーザー定義階層のメンバ構造は、メンバ間の関係によって、4 つの基本形式のいずれかになります。
均衡階層
均衡階層では、階層のすべての分岐は同じレベルに至り、各メンバの論理上の親はそのメンバのすぐ上のレベルです。Adventure Works DW の Analysis Services サンプル データベースが示す Product ディメンションの Product Categories 階層は、均衡階層の好例です。Product Name レベルの各メンバは Subcategory レベルに親メンバがあり、Subcategory レベルは Category レベルに親メンバがあります。また、階層内の各分岐には Product Name レベルのリーフ メンバがあります。
不均衡階層
不均衡階層では、階層の分岐はさまざまなレベルに至ります。親子階層は不均衡階層です。たとえば、Adventure Works DW の Analysis Services サンプル データベースの Organization ディメンションには、各従業員のメンバが含まれています。CEO は階層の最上位メンバで、部長と役員秘書は CEO の直下にあります。部長は従属メンバですが、役員秘書は直属です。
エンド ユーザーは、不均衡階層と不規則階層を区別できません。ただし、管理者は、Analysis Services でさまざまなテクニックとプロパティを使用してこれらの 2 種類の階層をサポートできます。詳細については、「不規則階層の操作」および「親子階層での属性の操作」を参照してください。
不規則階層
不規則階層では、少なくとも 1 つのメンバの論理上の親メンバが、そのメンバのすぐ上のレベルにありません。このため、不規則階層の分岐はさまざまなレベルに至ります。たとえば、Continent、CountryRegion、City の各レベルで順に定義されている地域ディメンションでは、メンバ Europe は階層の最上位レベルに表示され、メンバ France は中間レベル、メンバ Paris は最下位レベルに表示されます。France は Europe より限定的で、Paris は France より限定的です。この標準階層は、次のように変更されます。
Vatican City メンバが CountryRegion レベルに追加されます。
City レベルにメンバが追加され、CountryRegion レベルの Vatican City メンバに関連付けられます。
Province というレベルが CountryRegion レベルと City レベルの間に追加されます。
Province レベルに、CountryRegion レベルの他のメンバに関連付けられているメンバが生成され、City レベルのメンバが Province レベルの対応するメンバに関連付けられます。ただし、CountryRegion レベルの Vatican City メンバは Province レベルのメンバに関連付けられていないため、メンバは City レベルから CountryRegion レベルの Vatican City メンバに直接関連付ける必要があります。この変更により、このディメンションの階層は不規則になります。市 Vatican City の親は国/地域である Vatican City で、これは City レベルの Vatican City メンバの真上にはありません。詳細については、「不規則階層の操作」を参照してください。
親子階層
ディメンションの親子階層は、親子属性という特殊な属性を使用して定義され、これによってメンバ間の相互関係が決まります。親属性は、ディメンション メイン テーブル内の自己参照型リレーションシップまたは自己結合を記述します。親子階層は 1 つの親属性から構築されます。親子階層に存在するレベルは、親属性に関連付けられているメンバ間の親子リレーションシップに基づいているので、1 つの親子階層に割り当てられるレベルは 1 つのみです。親子階層のディメンション スキーマは、ディメンション メイン テーブルに存在する自己参照型リレーションシップに依存します。たとえば、次の図は、AdventureWorksDWAnalysis Services サンプル データベースの DimOrganization ディメンション メイン テーブルを示しています。
このディメンション テーブルでは、ParentOrganizationKey 列に OrganizationKey 主キー列との外部キー リレーションシップがあります。つまり、このテーブル内の各レコードは、親子リレーションシップによりテーブル内の別のレコードと関連している可能性があります。この種の自己結合は、通常、部署内の従業員の管理構造などの組織エンティティ データを表すために使用します。
親子階層を作成する場合、両方の属性で表す列は同じデータ型でなければなりません。また、どちらの属性も同じテーブルに属する必要があります。既定では、親キーがそのメンバ キーと同じ値、NULL、0 を持つメンバ、またはメンバ キーの列にない値を持つメンバは、(All) を除くトップレベルのメンバと見なされます。
親子階層の深さは、その階層の分岐によって異なります。つまり、親子階層は不均衡階層と見なされます。
エンド ユーザーに表示されるレベル数が階層内のレベル数によって決まるユーザー定義階層とは異なり、親子階層は、単一レベルの属性階層で定義され、この単一レベルの値によりユーザーに表示される複数レベルが生成されます。表示レベルの数は、メンバ キーと親キーが格納されるディメンション テーブルの列の内容によって異なります。レベルの数は、ディメンション テーブルのデータが変わると変化します。詳細については、「親子階層の定義」および「親子階層での属性の操作」を参照してください。