次の方法で共有


親子階層の定義

親子階層は、親属性を含んでいる標準ディメンションにある階層です。親属性は、ディメンション メイン テーブル内の自己参照型リレーションシップまたは自己結合を記述します。親子階層は 1 つの親属性から構築されます。親子階層に存在するレベルは、親属性に関連付けられているメンバ間の親子リレーションシップに基づいているので、1 つの親子階層に割り当てられるレベルは 1 つのみです。親子階層内でのメンバの位置は、親属性の KeyColumns プロパティおよび RootMemberIf プロパティで決まります。一方、レベル内でのメンバの位置は、親属性の OrderBy プロパティで決まります。属性のプロパティの詳細については、「属性と属性階層」を参照してください。

親子階層のレベル間に親子リレーションシップがあることにより、一部の非リーフ メンバには、子メンバから集計したデータだけでなく、基になるデータ ソースから派生したデータが含まれる場合もあります。

ディメンション スキーマ

親子階層のディメンション スキーマは、ディメンション メイン テーブルに存在する自己参照型リレーションシップに依存します。たとえば、次の図は、AdventureWorksDW サンプル データベースの DimOrganization ディメンション メイン テーブルを示しています。

DimOrganization テーブルの自己参照による結合

このディメンション テーブルでは、ParentOrganizationKey 列に OrganizationKey 主キー列との外部キー リレーションシップがあります。つまり、このテーブル内の各レコードは、親子リレーションシップによりテーブル内の別のレコードと関連している可能性があります。この種の自己結合は、通常、部署内の従業員の管理構造などの組織エンティティ データを表すために使用します。

階層とレベル

親子リレーションシップのないディメンションは、属性をグループ化したり順序付けたりすることにより、階層を構築します。これらのディメンションは、階層のレベル名を属性名から取得します。

ただし、親子ディメンションは、ディメンション メイン テーブルに格納されているデータを調べ、テーブル内のレコード間の親子リレーションシップを評価することにより、親子階層を構築します。親子階層の詳細については、「ユーザー階層」を参照してください。

親子階層内のレベルの名前は、階層の作成に使用された属性からは派生しません。親子ディメンションでは、名前付けテンプレート (属性が属性階層を生成する方法を制御する、親属性のレベルで指定できる文字列式) の使用により、レベル名が自動的に作成されます。親属性用の名前付けテンプレートの設定方法の詳細については、「属性と属性階層」を参照してください。

データ メンバ

通常、ディメンションのリーフ メンバには基になるデータ ソースから直接派生したデータが含まれ、非リーフ メンバには子メンバに対して実行した集計から派生したデータが含まれます。

ただし、親子階層では、一部の非リーフ メンバに、子メンバから集計されたデータだけでなく、基になるデータ ソースから派生したデータも含まれている場合があります。親子階層の非リーフ メンバの場合、基になるファクト テーブル データを含む特殊なシステム生成の子メンバを作成できます。データ メンバと呼ばれるこれらの特殊な子メンバには、非リーフ メンバに直接関係付けられた、非リーフ メンバの子孫から計算される集計値に依存しない値が含まれます。データ メンバの詳細については、「親子階層での属性の操作」を参照してください。