Microsoft SQL Server Analysis Services では、ディメンション内の属性は常にキー属性に直接または間接的に関連付けられます。 すべてのディメンション属性が同じリレーショナル テーブルから派生するスター スキーマに基づいてディメンションを定義すると、ディメンションのキー属性とキー以外の各属性の間に属性リレーションシップが自動的に定義されます。 複数の関連テーブルからディメンション属性が派生するスノーフレーク スキーマに基づいてディメンションを定義すると、属性リレーションシップは次のように自動的に定義されます。
キー属性と、メイン ディメンション テーブルの列にバインドされたキー以外の各属性の間。
キー属性と、基になるディメンション テーブルをリンクするセカンダリ テーブルの外部キーにバインドされた属性の間。
セカンダリ テーブルの外部キーにバインドされた属性と、セカンダリ テーブルの列にバインドされた各キー以外の属性の間。
ただし、これらの既定の属性リレーションシップを変更する理由は多数あります。 たとえば、キー以外の属性に基づいて、自然階層、カスタムの並べ替え順序、ディメンションの粒度を定義できます。 詳細については、「 ディメンション属性プロパティリファレンス」を参照してください。
注
属性リレーションシップは、多次元式 (MDX) でメンバー プロパティとして知られています。
自然階層リレーションシップ
階層は、ユーザー定義階層に含まれる各属性が、そのすぐ下にある属性と 1 対多のリレーションシップを持つ場合の自然階層です。 たとえば、8 列のリレーショナル ソース テーブルに基づく Customer ディメンションを考えてみましょう。
カスタマーキー
顧客名
年齢
ジェンダー
電子メール
市区町村
国
リージョン
対応する Analysis Services ディメンションには、次の 7 つの属性があります。
Customer (CustomerKey に基づき、CustomerName でメンバー名を指定)
年齢、性別、電子メール、市区町村、地域、国
自然階層を表すリレーションシップは、レベルの属性とその下のレベルの属性の間に属性リレーションシップを作成することによって適用されます。 Analysis Services の場合、これは自然なリレーションシップと潜在的な集計を指定します。 Customer ディメンションには、国、地域、市区町村、および顧客属性の自然階層が存在します。
{Country, Region, City, Customer}
の自然階層については、次の属性リレーションシップを追加して説明します。
Region 属性との属性リレーションシップとしての Country 属性。
City 属性との属性リレーションシップとしての Region 属性。
Customer 属性との属性リレーションシップとしての City 属性。
キューブ内のデータを移動するために、データ内の自然階層 ( アドホック 階層またはレポート階層と呼ばれます) を表さないユーザー定義階層 を 作成することもできます。 たとえば、 {Age, Gender}
に基づいてユーザー定義階層を作成できます。 2 つの階層の動作に違いはありません。ただし、自然階層は、ソース データ内の自然なリレーションシップを考慮して、ユーザーに対して非表示の構造を集計およびインデックス作成する利点があります。
レベルの SourceAttribute
プロパティによって、レベルの記述に使用される属性が決まります。 属性の KeyColumns
プロパティは、メンバーを提供するデータ ソース ビューの列を指定します。 属性の NameColumn
プロパティでは、メンバーに別の名前列を指定できます。
SQL Server Data Tools (SSDT) を使用してユーザー定義階層内のレベルを定義するには、 ディメンション デザイナー を使用して、ディメンション属性、ディメンション テーブル内の列、またはキューブのデータ ソース ビューに含まれる関連テーブルの列を選択できます。 ユーザー定義階層の作成の詳細については、「User-Defined 階層の 作成」を参照してください。
Analysis Services では、通常、メンバーのコンテンツに関する想定が行われます。 リーフ メンバーには子孫がなく、基になるデータ ソースから派生したデータが含まれています。 Nonleaf メンバーには子孫があり、子メンバーに対して実行される集計から派生したデータが含まれています。 集計レベルでは、メンバーは下位レベルの集計に基づいています。 したがって、 IsAggregatable
プロパティがレベルのソース属性で False
に設定されている場合は、その上のレベルとして集計可能な属性を追加しないでください。
属性リレーションシップの定義
属性リレーションシップを作成するときの主な制約は、属性リレーションシップによって参照される属性に、属性リレーションシップが属する属性のメンバーに対して複数の値が含まれていないことを確認することです。 たとえば、City 属性と State 属性の間にリレーションシップを定義した場合、各都市は 1 つの州にのみ関連付けることができます。
属性リレーションシップ クエリ
MDX クエリを使用すると、MDX SELECT
ステートメントの PROPERTIES
キーワードを使用して、メンバー プロパティの形式で属性リレーションシップからデータを取得できます。 MDX を使用してメンバー プロパティを取得する方法の詳細については、「 メンバー プロパティの使用 (MDX)」を参照してください。