ユーザー定義階層
ユーザー定義階層は、ディメンションのメンバを階層構造にまとめ、キューブのナビゲーション パスを提供するために Microsoft SQL Server 2005 Analysis 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 つのみです。親子階層のディメンション スキーマは、ディメンション メイン テーブルに存在する自己参照型リレーションシップに依存します。たとえば、次の図は、AdventureWorksDW Analysis Services サンプル データベースの DimOrganization ディメンション メイン テーブルを示しています。
このディメンション テーブルでは、ParentOrganizationKey 列に OrganizationKey 主キー列との外部キー リレーションシップがあります。つまり、このテーブル内の各レコードは、親子リレーションシップによりテーブル内の別のレコードと関連している可能性があります。この種の自己結合は、通常、部署内の従業員の管理構造などの組織エンティティ データを表すために使用します。
親子階層を作成する場合、両方の属性で表す列は同じデータ型でなければなりません。また、どちらの属性も同じテーブルに属する必要があります。既定では、親キーがそのメンバ キーと同じ値、NULL、0 を持つメンバ、またはメンバ キーの列にない値を持つメンバは、(All) を除くトップレベルのメンバと見なされます。
親子階層の深さは、その階層の分岐によって異なります。つまり、親子階層は不均衡階層と見なされます。
エンド ユーザーに表示されるレベル数が階層内のレベル数によって決まるユーザー定義階層とは異なり、親子階層は、単一レベルの属性階層で定義され、この単一レベルの値によりユーザーに表示される複数レベルが生成されます。表示レベルの数は、メンバ キーと親キーが格納されるディメンション テーブルの列の内容によって異なります。レベルの数は、ディメンション テーブルのデータが変わると変化します。詳細については、「親子階層の定義」および「親子階層での属性の操作」を参照してください。
参照
概念
ユーザー定義階層の定義と構成
ユーザー定義階層のプロパティの構成
ディメンションと属性の定義および構成