DrilldownLevel (MDX)
向下鑽研到集合中所顯示之最低層級下的一個層級中的成員。
指定向下鑽研為選擇性的層級,但您若設定了該層級,可以使用 level expression 或 index level。 這些屬性彼此互斥。 最後,查詢中如有出現導出成員,可以指定引數將這些成員加入資料列集。
語法
DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])
引數
Set_Expression
傳回集合的有效多維度運算式 (MDX) 運算式。Level_Expression
(選擇性)。 可明確指定所要向下鑽研之層級的 MDX 運算式。 若指定了層級運算式,請略過下列索引引數。Index
(選擇性)。 指定集合內向下鑽研階層編號的有效數值運算式。 您可以不使用 Level_Expression 而使用索引層級,明確地指定所要向下鑽研的層級。Include_Calc_Members
(選擇性)。 指出是否要在向下鑽研層級加入導出成員 (如其存在)。
備註
DrilldownLevel 函數會根據指定之集合中所含的成員,以階層順序傳回子成員集合。 會保留指定之集合中原始成員的順序,但在函數之結果集中的所有子成員則在其父成員底下。
如果是多層級階層資料結構,您可以明確地選擇所要向下鑽研的層級。 您有兩種完全不同的方式可以指定層級。 第一種方法是使用會傳回層級的 MDX 運算式設定 level_expression 引數;另一種方法是使用以數值指定層級的數值運算式,指定 index 引數。
如果指定了層級運算式,函數只會擷取在指定之層級的成員其子系,以階層順序來建構集合。 如果指定了層級運算式,但該層級不含任何成員,該運算式將予忽略。
如有指定索引值,且此索引以零為基底,則此函數只會擷取指定集合中所參考的階層中,其最低層級之下一個層級的成員子系,依階層順序來建構集合。
如果沒有指定層級運算式或索引值,此函數只會擷取指定之集合中所參考之第一個維度其最低層級的那些成員其子系,以階層順序來建構集合。
查詢 XMLA 屬性 MdpropMdxDrillFunctions,可讓您確認伺服器針對鑽研函數提供的支援層級;如需詳細資訊,請參閱<支援的 XMLA 屬性 (XMLA)>。
範例
您可以在 SSMS 的 MDX 查詢視窗中,使用 Adventure Works Cube 試用下列範例。
範例 1 – 示範基本語法
第一個範例示範 DrilldownLevel 的基本語法。 唯一需要的引數是一個集合運算式。 請注意,當您執行這項查詢時,會得到父系 [All Categories] 及其下一個層級的成員:[Accessories]、[Bikes] 等等。 這個簡單的範例示範了 DrilldownLevel 函數的基本用途 -- 向下鑽研下一個層級之下的層級。
SELECT DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]}}) ON COLUMNS
FROM [Adventure Works]
範例 2 – 另一種使用明確索引層級的語法
這個範例示另一種語法,必須在數值運算式中指定索引層級。 這個案例中的索引層級為 0。 對於以零為基底的索引,這是最低層級。
SELECT
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS
FROM [Adventure Works]
請注意,此處所得的結果集與前一項查詢相同。 一般而言,除非您要從特定層級開始向下鑽研,否則並不需要設定索引層級。 將索引值設定為 1 重新執行前一項查詢,然後再設定為 2。 當將索引值設為 1 時,您會發現向下鑽研從階層的第二層開始。 當將索引值設為 2 時,向下鑽研會從第三層開始,而這也是此範例中的最高層級。 數值運算式愈高,索引層級愈高。
範例 3 – 示範層級運算式
下一個範例示範如何使用層級運算式。 當有一個集合以階層式結構表示時,您即可使用層級運算式從階層中選擇要開始向下鑽研的層級。
這個範例的向下鑽研會依照 DrilldownLevel 函數的第二個引數指定,從 [City] 這個層級開始。 當您對華盛頓及奧勒岡州執行這項查詢時,向下鑽研會從 [City] 層級開始。 根據 DrilldownLevel 函數的設定,結果集也會包含再下一個層級 [Postal codes] 的成員。
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 旗標時,這些成員會出現在結果集的底部。 請注意,此旗標會指定為第四個參數。
這個範例之所以能夠成功,是因為導出成員與非導出成員位於同一層級。 導出成員 [West Coast] 由 [United States] 的成員加上 [United States].之下一層級中的所有成員組成。
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]。