DrilldownLevel (MDX)

Går ner till medlemmarna i en grupp till en nivå under den lägsta nivån som representeras i setet.

Att specificera vilken nivå du ska borra ner på är valfritt, men om du ställer in nivån kan du använda antingen ett nivåuttryck eller indexnivån. Dessa argument utesluter varandra. Slutligen, om beräknade medlemmar finns i frågan, kan du ange ett argument för att inkludera dem i radmängden.

Syntax

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

Arguments

Set_Expression
Ett giltigt Multidimensional Expressions (MDX)-uttryck som returnerar en mängd.

Level_Expression
(Valfritt) Ett MDX-uttryck som uttryckligen identifierar nivån där man ska borra ner. Om du specificerar ett nivåuttryck, hoppa över indexargumentet nedan.

Index
(Valfritt) Ett giltigt numeriskt uttryck som specificerar hierarkinumret som ska gräva ner i mängden. Du kan använda indexnivån istället för Level_Expression för att tydligt identifiera vilken nivå du ska gå ner på.

Include_Calc_Members
(Valfritt) En flagga som anger om beräknade medlemmar, om de finns, ska inkluderas på drill-down-nivån.

Remarks

Funktionen DrilldownLevel returnerar en uppsättning barnmedlemmar i hierarkisk ordning, baserad på de medlemmar som ingår i den angivna uppsättningen. Ordningen bevaras bland de ursprungliga medlemmarna i den angivna mängden, förutom att alla barnmedlemmar som ingår i funktionsns resultatmängd inkluderas omedelbart under sin föräldramedlem.

Givet en flernivå-hierarkisk datastruktur kan du uttryckligen välja en nivå att gå ner på. Det finns två ömsesidigt uteslutande sätt att specificera nivån. Det första tillvägagångssättet är att sätta det level_expression argumentet med ett MDX-uttryck som returnerar nivån. Ett alternativt tillvägagångssätt är att specificera indexargumentet med ett numeriskt uttryck som anger nivån efter nummer.

Om ett nivåuttryck specificeras, konstruerar funktionen en mängd i hierarkisk ordning genom att hämta barnen till endast de medlemmar som befinner sig på den angivna nivån. Om ett nivåuttryck anges och det inte finns någon medlem på den nivån, ignoreras nivåuttrycket.

Om ett indexvärde specificeras konstruerar funktionen en mängd i en hierarkisk ordning genom att hämta barnen till endast de medlemmar som befinner sig på nästa lägsta nivå i hierarkin som refereras i den specificerade mängden, givet ett nollbaserat index.

Om varken ett nivåuttryck eller ett indexvärde specificeras, konstruerar funktionen en mängd i hierarkisk ordning genom att hämta barnen till endast de medlemmar som befinner sig på den lägsta nivån i den första dimension som refereras i den specificerade mängden.

Att fråga XMLA-egenskapen MdpropMdxDrillFunctions gör det möjligt att verifiera den supportnivå som servern ger för borrfunktionerna; se Stödda XMLA-egenskaper (XMLA) för detaljer.

Examples

Du kan prova följande exempel i MDX-frågefönstret i SSMS, med hjälp av Adventure Works-kuben.

Exempel 1 – demonstrerar minimal syntax

Det första exemplet visar den minimala syntaxen för DrilldownLevel. Det enda nödvändiga argumentet är ett mängduttryck. Lägg märke till att när du kör denna fråga får du föräldragruppen [Alla kategorier] och medlemmar på nästa nivå ned: [Tillbehör], [Cyklar] och så vidare. Även om detta exempel är enkelt, visar det det grundläggande syftet med DrilldownLevel-funktionen , som är att gå vidare till nästa nivå nedanför.

SELECT DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]}}) ON COLUMNS  
FROM [Adventure Works]  

Exempel 2 – alternativ syntax med en explicit indexnivå

Detta exempel demonstrerar den alternativa syntaxen, där indexnivån anges genom ett numeriskt uttryck. I detta fall är indexnivån 0. För ett nollbaserat index är detta den lägsta nivån.

SELECT  
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS  
FROM [Adventure Works]  

Observera att resultatmängden är identisk med föregående fråga. Som en allmän regel är det onödigt att sätta indexnivån om du inte vill att övningen ska börja på en specifik nivå. Kör om föregående fråga, sätt indexvärdet till 1, och sedan 2. Med indexvärdet satt till 1 ser du att genomgången börjar på andra nivån i hierarkin. Med indexvärdet satt till 2 börjar borrningen på den tredje nivån, den högsta nivån i detta exempel. Ju högre numeriskt uttryck, desto högre indexnivå.

Exempel 3 – demonstrerar ett nivåuttryck

Nästa exempel visar hur man använder ett nivåuttryck. Givet en mängd som representerar en hierarkisk struktur, kan du med ett nivåuttryck välja en nivå i hierarkin för att börja drilla.

I detta exempel börjar nivån för drilldown vid [City], som det andra argumentet i DrilldownLevel-funktionen . När du kör denna sökning börjar analysen på [City]-nivå, för delstaterna Washington och Oregon. Enligt DrilldownLevel-funktionen inkluderar resultatuppsättningen även medlemmar på nästa nivå ner, [Postnummer].

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]  

Exempel 4 – inklusive beräknade medlemmar

Det sista exemplet visar en beräknad medlem, som visas längst ner i resultatuppsättningen när du lägger till include_calculated_members-flaggan. Observera att flaggan anges som den fjärde parametern.

Detta exempel fungerar eftersom den beräknade medlemmen är på samma nivå som de icke-beräknade medlemmarna. Den beräknade medlemmen [West Coast] består av medlemmar från [United States], plus alla medlemmar en nivå under [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]  

Om du bara tar bort flaggan och kör om frågan får du samma resultat, minus den beräknade medlemmen [West Coast].