DrilldownLevel (MDX)

Gaat de leden van een set naar één niveau onder het laagste niveau dat in de set wordt weergegeven.

Het specificeren van het niveau waarop je moet doorboren is optioneel, maar als je het niveau wel instelt, kun je een niveau-expressie of het indexniveau gebruiken. Deze argumenten sluiten elkaar uit. Ten slotte, als berekende leden aanwezig zijn in de query, kun je een argument specificeren om ze in de rijset op te nemen.

Syntax

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

Arguments

Set_expressie
Een geldige Multidimensionale Expressies (MDX) expressie die een verzameling teruggeeft.

Level_Expression
(Optioneel). Een MDX-expressie die expliciet het niveau identificeert waarop je moet doorgaan. Als je een niveauexpressie specificeert, sla dan het onderstaande indexargument over.

Index
(Optioneel). Een geldige numerieke uitdrukking die het hiërarchienummer specificeert waarin binnen de set moet worden doorgegaan. Je kunt het indexniveau gebruiken in plaats van Level_Expression om expliciet het niveau te identificeren waar je naar beneden moet gaan.

Include_Calc_Members
(Optioneel). Een vlag die aangeeft of berekende leden moeten worden opgenomen, mocht die bestaan, op het drilldown-niveau.

Remarks

De DrilldownLevel-functie geeft een set kindleden terug in hiërarchische volgorde, gebaseerd op de leden die in de gespecificeerde set zijn opgenomen. Orde blijft behouden tussen de oorspronkelijke leden in de gespecificeerde set, behalve dat alle kindleden die in de resultaatset van de functie zijn opgenomen, direct onder hun ouderlid worden opgenomen.

Met een hiërarchische datastructuur op meerdere niveaus kun je expliciet een niveau kiezen waar je in wilt duiken. Er zijn twee wederzijds uitsluitende manieren om het niveau te specificeren. De eerste benadering is het instellen van het level_expression-argument met een MDX-expressie die het niveau teruggeeft. Een alternatieve aanpak is het specificeren van het indexargument , met een numerieke expressie die het niveau per nummer specificeert.

Als een niveauexpressie wordt gespecificeerd, construeert de functie een verzameling in hiërarchische volgorde door alleen de kinderen van die leden op het gespecificeerde niveau op te halen. Als een niveau-expressie is gespecificeerd en er is geen lid op dat niveau, wordt de niveau-expressie genegeerd.

Als een indexwaarde wordt gespecificeerd, construeert de functie een verzameling in hiërarchische volgorde door alleen de kinderen op te halen van die leden die zich op het volgende laagste niveau van de hiërarchie bevinden die in de gespecificeerde verzameling wordt genoemd, gegeven een nul-gebaseerde index.

Als noch een niveauexpressie noch een indexwaarde is gespecificeerd, construeert de functie een verzameling in hiërarchische volgorde door alleen de kinderen op te halen van die leden die zich op het laagste niveau van de eerste dimensie bevinden die in de gespecificeerde verzameling wordt genoemd.

Door de XMLA-eigenschap MdpropMdxDrillFunctions te bevragen, kun je het ondersteuningsniveau verifiëren dat de server biedt voor de boorfuncties; zie Ondersteunde XMLA-eigenschappen (XMLA) voor details.

Examples

Je kunt de volgende voorbeelden proberen in het MDX-queryvenster in SSMS, met behulp van de Adventure Works-kubus.

Voorbeeld 1 - demonstreert minimale syntaxis

Het eerste voorbeeld toont de minimale syntaxis voor DrilldownLevel. Het enige vereiste argument is een setexpressie. Let op dat wanneer je deze query uitvoert, je de ouder [Alle Categorieën] en leden van het volgende niveau naar beneden krijgt: [Accessoires], [Fietsen], enzovoort. Hoewel dit voorbeeld eenvoudig is, toont het het basisdoel van de DrilldownLevel-functie , die is dat je naar het volgende niveau hieronder gaat.

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

Voorbeeld 2 - alternatieve syntaxis met een expliciet indexniveau

Dit voorbeeld demonstreert de alternatieve syntaxis, waarbij het indexniveau wordt gespecificeerd via een numerieke expressie. In dit geval is het indexniveau 0. Voor een index op nul is dit het laagste niveau.

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

Let op dat de resultaatset identiek is aan de vorige query. Als algemene regel is het niet nodig om het indexniveau in te stellen, tenzij je wilt dat de inleiding op een specifiek niveau begint. Voer de vorige query opnieuw uit, waarbij je de indexwaarde op 1 en daarna op 2 zet. Met indexwaarde op 1 zie je dat de drill down begint op het tweede niveau in de hiërarchie. Met de indexwaarde op 2 begint de drill down op het derde niveau, het hoogste niveau in dit voorbeeld. Hoe hoger de numerieke uitdrukking, hoe hoger het indexniveau.

Voorbeeld 3 - demonstreert een niveau-expressie

Het volgende voorbeeld laat zien hoe je een niveau-expressie gebruikt. Gegeven een set die een hiërarchische structuur vertegenwoordigt, kun je met een niveau-expressie een niveau in de hiërarchie kiezen om de drill down te starten.

In dit voorbeeld begint het niveau van drilldown bij [City], als het tweede argument van de DrilldownLevel-functie . Wanneer je deze zoekopdracht uitvoert, begint de doorgang op [Stads]niveau, voor de staten Washington en Oregon. Volgens de DrilldownLevel-functie bevat de resultaatset ook leden op het volgende niveau, [Postcodes].

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]  

Voorbeeld 4 - inclusief berekende leden

Het laatste voorbeeld toont een berekend lid, dat onderaan de resultatenset verschijnt wanneer je de include_calculated_members-vlag toevoegt. Let op dat de vlag als de vierde parameter is gespecificeerd.

Dit voorbeeld werkt omdat het berekende lid op hetzelfde niveau ligt als de niet-berekende leden. Het berekende lid [West Coast] bestaat uit leden uit [Verenigde Staten], plus alle leden één niveau onder de [Verenigde Staten].

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]  

Als je alleen de vlag verwijdert en de query opnieuw uitvoert, krijg je dezelfde resultaten, minus het berekende lid, [West Coast].