DrilldownLevel(MDX)

會鑽探集合成員到該組所代表的最低層級下一級。

指定要深入的層級是可選的,但如果你設定了層級,可以使用 層級表達式索引層級。 這些論點是互斥的。 最後,如果查詢中有計算出的成員,你可以指定一個參數將它們包含在列集中。

Syntax

DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])  

論點

Set_Expression
一個有效的多維表達式(MDX)表達式,能回傳一個集合。

Level_Expression
(選擇性) 。 一個明確指出要深入的 MDX 表達式。 如果你指定一個層級表達式,請跳過下方的索引參數。

索引
(選擇性) 。 一個有效的數值表達式,指定在集合中要深入的階層編號。 你可以用指數層級取代Level_Expression來明確識別要深入的層級。

Include_Calc_Members
(選擇性) 。 一個旗標指示是否在鑽取層級包含計算過的成員(若存在)。

備註

DrilldownLevel 函式會依階層順序回傳一組子成員,這些子成員是指定集合中包含的成員。 在指定集合中,原始成員之間的順序會被保留,但函式結果集中包含的所有子成員會直接歸入其父成員之下。

給定一個多層次的階層式資料結構,你可以明確選擇要深入的層級。 有兩種互斥的方式來指定這個層級。 第一種方法是使用 MDX 運算式來設定 level_expression 參數,該表達式會回傳層級;另一種方法是指定 索引 參數,使用數值表達式,透過數字指定層級。

若指定層級表達式,函數會依階層順序構造集合,僅取得位於指定層級成員的子節點。 若指定一個層級表達式,且該層級無成員,則忽略該層級表達式。

若指定了索引值,函數會以階層順序構造集合,僅取得該集合中階層中下層次的成員的子節點,且索引為零為基礎。

若未指定層級表達式或索引值,函式會以階層順序構造集合,僅取得指定集合中第一個維度最低層級成員的子節點。

查詢 XMLA 屬性 MdpropMdxDrillFunctions 可以驗證伺服器對鑽探功能的支援程度;詳情請參閱支援的 XMLA 屬性(XMLA)。

Examples

你可以在 SSMS 的 MDX 查詢視窗中,使用 Adventure Works 的方塊嘗試以下範例。

範例 1 - 展示最小語法

第一個範例展示了 DrilldownLevel 的最小語法。 唯一需要的參數是集合表達式。 請注意,當你執行這個查詢時,你會得到父類別 [所有類別]以及下一層的成員:[配件]、[自行車]等等。 雖然這個例子很簡單,但它展示了 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 - 示範一個水平表達式

下一個範例展示了如何使用水準表達式。 給定代表階層結構的集合,使用層級表達式可以讓你選擇階層中的一個層級開始鑽探。

在這個例子中,鑽取層級從 [City] 開始,作為 DrilldownLevel 函數的第二個參數。 當你執行這個查詢時,深入分析會從華盛頓州和俄勒岡州的[城市]層級開始。 根據 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 旗標時,它會出現在結果集的底部。 注意旗標被指定為第四個參數。

此範例之所以成立,是因為計算出的成員與未計算的成員處於同一層級。 計算成員[West Coast]由[美國]成員組成,外加所有低於[美國]一級的成員。

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]。