属性階層の既定のメンバーは、属性階層がクエリに含まれていない場合に式を評価するために使用されます。 属性階層をソースとする属性を含む属性階層またはユーザー階層がクエリに含まれている場合、既定のメンバーは無視されます。 これは、クエリで指定されたメンバーが使用されるためです。
属性階層の既定のメンバーは、属性階層の DefaultMember
プロパティ値として属性メンバーを指定することによって設定されます。 このプロパティは、ディメンション デザイナーの [ディメンション構造] タブ、または SQL Server Data Tools (SSDT) のキューブ デザイナーの [計算] タブにあるキューブの計算スクリプトで設定できます。 ディメンション セキュリティを定義するときに、[ディメンション データ] タブでセキュリティ ロールの DefaultMember
プロパティ (ディメンションの既定のメンバー セットをオーバーライドする) を指定することもできます。 名前解決の問題を回避するには、キューブの MDX スクリプトで既定のメンバーを定義します。キューブがデータベース ディメンションを複数回参照している場合、キューブ内のディメンションの名前がデータベース内のディメンションとは異なる場合、または異なるキューブに異なる既定のメンバーを含める場合です。
属性の既定のメンバーは、属性がクエリに含まれていない場合に式を評価するために使用されます。 属性の既定のメンバーは、属性の DefaultMember
プロパティによって指定されます。 ディメンションの階層がクエリに含まれるときは常に、階層内のレベルに対応する属性のすべての既定のメンバーは無視されます。 ディメンションの階層がクエリに含まれていない場合は、ディメンション内のすべての属性に既定のメンバーが使用されます。
既定のメンバーが指定されていない場合の既定のメンバーの解決
属性階層に既定のメンバーが指定されておらず、属性階層が集計可能な場合 (属性の IsAggregatable
プロパティが True
に設定されている場合)、(All) メンバーが既定のメンバーになります。 既定のメンバーが指定されておらず、属性階層が集計できない場合 (属性の IsAggregatable
プロパティが False
に設定されている場合)、属性階層の最上位レベルから既定のメンバーが選択されます。
既定のメンバーの指定
Microsoft SQL Server Analysis Services のディメンション内のすべての属性には既定のメンバーがあり、属性の DefaultMember
プロパティを使用して指定できます。 この設定は、属性がクエリに含まれていない場合に式を評価するために使用されます。 クエリでディメンション内の階層が指定されている場合、階層内の属性の既定のメンバーは無視されます。 クエリでディメンション内の階層が指定されていない場合、ディメンション属性の DefaultMember
設定が有効になります。
属性の DefaultMember
設定が空白で、その IsAggregatable
プロパティが True
に設定されている場合、既定のメンバーは All メンバーです。
IsAggregatable
プロパティが False
に設定されている場合、既定のメンバーは最初に表示されるレベルの最初のメンバーになります。
属性の DefaultMember
設定は、属性が参加するすべての階層に適用されます。 ディメンション内の階層ごとに異なる設定を使用することはできません。 たとえば、[1998] メンバーが [Year] 属性の既定のメンバーである場合、この設定はディメンション内のすべての階層に適用されます。 この場合の DefaultMember
設定は、1 つの階層では [1998] に、別の階層では [1997] にすることはできません。
自然に集計されない階層内の特定のレベルの既定のメンバーを定義する場合は、階層内のそのレベルより上のすべてのレベルで既定のメンバーを定義する必要があります。 たとえば、All-Countries-Climate 階層では、Countries の既定のメンバーを定義しない限り、Climate の既定のメンバーを定義することはできません。 これを行わないと、クエリ時間エラーが発生します。
階層内のレベルが自然に集計される場合は、階層内の他の属性に関係なく、階層内の任意の属性の既定のメンバーを定義できます。 たとえば、階層の Country/Region-Province-City では、[City] などの City の既定のメンバーを定義できます。[モントリオール] 州または国/地域の既定のメンバーを定義しません。