DrilldownLevel (MDX)
セットで表される最低レベルより 1 つ下のレベルに、セットのメンバーをドリルダウンします。
ドリルダウンするレベルの指定は省略可能ですが、レベルを設定する場合は、 レベル式 または インデックス レベルを使用できます。 これらの引数は相互に排他的です。 最後に、計算されるメンバーがクエリに存在する場合は、引数を指定して行セットに含めることができます。
構文
DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])
引数
Set_Expression
セットを返す有効な多次元式 (MDX) 式。
Level_Expression
(省略可能)。 ドリルダウンするレベルを明示的に識別する MDX 式。 レベル式を指定する場合は、以下の index 引数をスキップします。
Index
(省略可能)。 セット内でドリルダウンする階層番号を指定する有効な数値式。 Level_Expressionの代わりにインデックス レベルを使用して、ドリルダウンするレベルを明示的に識別できます。
Include_Calc_Members
(省略可能)。 計算されるメンバーがドリルダウン レベルに存在する場合にそれらを含めるかどうかを示すフラグです。
解説
DrilldownLevel 関数は、指定したセットに含まれるメンバーに基づいて、子メンバーのセットを階層的な順序で返します。 順序は、指定したセット内の元のメンバー間で保持されます。ただし、関数の結果セットに含まれるすべての子メンバーが親メンバーのすぐ下に含まれる点が除きます。
複数レベルの階層データ構造を指定すると、ドリルダウンするレベルを明示的に選択できます。 レベルを指定するには、相互に排他的な方法が 2 つあります。 1 つ目の方法は、 レベル を返す MDX 式を使用してlevel_expression引数を設定することです。もう 1 つの方法は、 インデックス 引数を指定し、数値でレベルを指定する数値式を使用することです。
レベル式が指定されている場合、関数は、指定されたレベルにあるメンバーの子のみを取得することで、階層的な順序でセットを構築します。 レベル式が指定されていて、そのレベルにメンバーが存在しない場合、レベル式は無視されます。
インデックス値が指定された場合、この関数は、インデックス (0 を基点とするインデックス) を基準にして、指定されたセット内で参照されている階層の最低レベルより 1 つ上のレベルにあるメンバーの子メンバーだけを取得し、階層の順序でセットを構築します。
レベル式もインデックス値も指定されていない場合、関数は、指定されたセットで参照されている最初のディメンションの最下位レベルにあるメンバーの子のみを取得することで、階層的な順序でセットを構築します。
XMLA プロパティ MdpropMdxDrillFunctions を照会すると、サーバーがドリル機能に対して提供するサポートレベルを確認できます。詳細については、「 サポートされている XMLA プロパティ (XMLA)」 を参照してください。
例
Adventure Works キューブを使用して、SSMS の MDX クエリ ウィンドウで次の例を試すことができます。
例 1 - 最小限の構文を示します
最初の例は、 DrilldownLevel の最小構文を示しています。 唯一必要な引数は、セット式です。 このクエリを実行すると、親 [すべてのカテゴリ] と次のレベルのメンバー ([Accessories]、[Bikes]など) が取得されます。 この例は単純ですが、 DrilldownLevel 関数の基本的な目的を示しています。次のレベルにドリルダウンします。
SELECT DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]}}) ON COLUMNS
FROM [Adventure Works]
例 2 - 明示的なインデックス レベルを使用した代替構文
この例では、インデックス レベルが数値式を使用して指定される代替構文を示します。 この場合、インデックス レベルは 0 です。 0 から始まるインデックスの場合、これは最も低いレベルです。
SELECT
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS
FROM [Adventure Works]
前のクエリと同じ結果セットが返されることに注意してください。 一般に、特定のレベルからドリルダウンする場合を除き、インデックス レベルを設定する必要はありません。 前のクエリを再実行し、インデックス値を 1、2 に設定します。 インデックス値を 1 に設定すると、階層の 2 番目のレベルからドリルダウンが開始されます。 インデックス値を 2 に設定すると、ドリルダウンは、この例で最も高いレベルである 3 番目のレベルから開始されます。 数値式を大きくするほど、インデックス レベルは高くなります。
例 3 - レベル式を示します
次の例では、レベル式の使用方法を示します。 階層構造を表すセットを指定すると、レベル式を使用すると、階層内のレベルを選択してドリルダウンを開始できます。
この例では、ドリルダウンのレベルは DrilldownLevel 関数の 2 番目の引数として [City] から始まります。 このクエリを実行すると、ワシントン州およびオレゴン州の [City] レベルからドリルダウンされます。 DrilldownLevel 関数ごとに、結果セットには次のレベルの [郵便番号] のメンバーも含まれます。
SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
NON EMPTY (
DRILLDOWNLEVEL(
{[Customer].[Customer Geography].[Country].[United States],
DESCENDANTS(
{ [Customer].[Customer Geography].[State-Province].[Washington],
[Customer].[Customer Geography].[State-Province].[Oregon]},
[Customer].[Customer Geography].[City]) } ,
[Customer].[Customer Geography].[City] ) ) ON ROWS
FROM [Adventure Works]
例 4 - 計算されるメンバーを含む
最後の例では、include_calculated_members フラグを追加したときに結果セットの下部に表示される、計算されるメンバー を 示します。 フラグが 4 番目のパラメーターとして指定されていることに注意してください。
計算されるメンバーが、計算されないメンバーと同じレベルに存在するため、この例は正常に実行されます。 計算されるメンバー [West Coast] は、[米国] のメンバーに加えて、[米国] より 1 レベル下のすべてのメンバーで構成されます。
WITH MEMBER
[Customer].[Customer Geography].[Country].&[United States].[West Coast] AS
[Customer].[Customer Geography].[State-Province].&[OR]&[US] +
[Customer].[Customer Geography].[State-Province].&[WA]&[US] +
[Customer].[Customer Geography].[State-Province].&[CA]&[US]
SELECT [Measures].[Internet Order Count] ON 0,
DRILLDOWNLEVEL([Customer].[Customer Geography].[Country].&[United States],,,INCLUDE_CALC_MEMBERS) on 1
FROM [Adventure Works]
このフラグだけを削除してクエリを再実行すると、計算されるメンバー [West Coast] が除かれた、同じ結果が返されます。