DrilldownLevel (MDX)

Führt einen Drilldown der Elemente einer Menge in eine Ebene unter der untersten Ebene aus, die in der Menge dargestellt ist.

Das Angeben der Ebene, auf der ein Drilldown durchgeführt werden soll, ist optional. Wenn Sie die Ebene festlegen, können Sie entweder einen Ebenenausdruck oder die Indexebene verwenden. Diese Argumente schließen sich gegenseitig aus. Wenn berechnete Elemente in der Abfrage vorhanden sind, können Sie ein Argument angeben, um sie in das Rowset einzubeziehen.

Syntax

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

Argumente

Set_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Menge zurückgibt.

Level_Expression
(Optional). Ein MDX-Ausdruck, der explizit die Ebene für den Drilldown identifiziert. Wenn Sie einen Ebenenausdruck angegeben, überspringen Sie das Indexargument unten.

Index
(Optional). Ein gültiger numerischer Ausdruck, der die Nummer der Hierarchie angibt, in die innerhalb der Menge ein Drilldown durchgeführt werden soll. Sie können die Indexebene statt Level_Expression verwenden, um explizit die Ebene festzulegen, auf die ein Drilldown ausgeführt werden soll.

include_calc_members
(Optional). Ein Flag, das anzeigt, ob berechnete Elemente eingeschlossen werden sollen, wenn sie vorhanden sind (auf Drilldownebene).

Bemerkungen

Die DrilldownLevel-Funktion gibt einen Satz untergeordneter Member in einer hierarchischen Reihenfolge zurück, basierend auf den Elementen, die im angegebenen Satz enthalten sind. Die Reihenfolge der ursprünglichen Elemente in der angegebenen Menge wird beibehalten, wobei jedoch alle in das Resultset der Funktion aufgenommenen untergeordneten Elemente direkt unter ihrem übergeordneten Element aufgenommen werden.

Wenn eine Datenstruktur mit einer Hierarchie mit mehreren Ebenen vorliegt, können Sie explizit eine Ebene auswählen, auf die der Drilldown erfolgen soll. Es gibt zwei Möglichkeiten, die Ebene festzulegen. Diese schließen sich gegenseitig aus. Der erste Ansatz besteht darin, das level_expression-Argument mithilfe eines MDX-Ausdrucks festzulegen, der die Ebene zurückgibt. Ein alternativer Ansatz besteht darin, das Indexargument mithilfe eines numerischen Ausdrucks anzugeben, der die Ebene nach Zahl angibt.

Wenn ein Ebenenausdruck angegeben wird, erstellt die Funktion eine Menge in einer hierarchischen Reihenfolge, indem die untergeordneten Elemente nur für diejenigen Elemente abgerufen werden, die sich auf der angegebenen Ebene befinden. Wenn ein Ebenenausdruck festgelegt ist und sich auf dieser Ebene kein Element befindet, wird der Ebenenausdruck ignoriert.

Wenn ein Indexwert angegeben wird, erstellt die Funktion basierend auf einem nullbasierten Index eine Menge in einer hierarchischen Reihenfolge, indem die untergeordneten Elemente nur für die Elemente auf der nächstunteren Ebene der Dimension abgerufen werden, auf die in der Menge verwiesen wird.

Wenn weder ein Ebenenausdruck noch ein Indexwert angegeben wird, erstellt die Funktion einen Satz in einer hierarchischen Reihenfolge, indem sie nur die untergeordneten Elemente abruft, die sich auf der niedrigsten Ebene der ersten Dimension befinden, auf die im angegebenen Satz verwiesen wird.

Durch Abfragen der XMLA-Eigenschaft MdpropMdxDrillFunctions können Sie überprüfen, welche Unterstützung der Server für die Bohrfunktionen bereitstellt. Weitere Informationen finden Sie unter Unterstützte XMLA-Eigenschaften (XMLA).

Beispiele

Sie können die folgenden Beispiele im MDX-Abfragefenster in SSMS ausprobieren. Verwenden Sie dafür den Adventure Works-Cube.

Beispiel 1: Veranschaulicht die minimale Syntax

Das erste Beispiel zeigt die minimale Syntax für DrilldownLevel. Das einzige erforderliche Argument ist ein Mengenausdruck. Beachten Sie, dass Sie beim Ausführen dieser Abfrage das übergeordnete Element [Alle Kategorien] und Die Mitglieder der nächsten Ebene nach unten erhalten: [Zubehör], [Bikes] usw. Obwohl dieses Beispiel einfach ist, veranschaulicht es den grundlegenden Zweck der DrilldownLevel-Funktion , die einen Drilldown bis zur nächsten Ebene unten darstellt.

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

Beispiel 2: Alternative Syntax unter Verwendung einer expliziten Indexebene

Dieses Beispiel zeigt die alternative Syntax. Hier wird die Indexebene über einen numerischen Ausdruck festgelegt. In diesem Fall ist die Indexebene 0. Für einen nullbasierten Index ist das die unterste Ebene.

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

Beachten Sie, dass das Resultset mit der vorherigen Abfrage identisch ist. Allgemein gilt, ein Festlegen der Indexebene ist unnötig, es sei denn, der Drilldown soll auf einer bestimmten Ebene beginnen. Führen Sie die vorherige Abfrage erneut aus, und legen Sie einen Indexwert von 1 und dann von 2 fest. Ist der Indexwert auf 1 festgelegt, beginnt der Drilldown auf der zweiten Ebene der Hierarchie. Ist der Indexwert auf 2 festgelegt, beginnt der Drilldown auf der dritten Ebene, der höchsten Ebene in diesem Beispiel. Je höher der numerische Ausdruck, desto höher die Indexebene.

Beispiel 3: Veranschaulicht einen Ebenenausdruck

Im folgenden Beispiel wird die Verwendung eines Ebenenausdrucks veranschaulicht. Wenn eine Menge vorliegt, die eine hierarchische Struktur darstellt, können Sie mit einem Ebenenausdruck eine Ebene in der Hierarchie auswählen, auf der der Drilldown beginnen soll.

In diesem Beispiel beginnt die Drilldownebene bei [Ort], als zweites Argument der DrilldownLevel-Funktion . Wenn Sie diese Abfrage ausführen, beginnt der Drilldown auf der Ebene [City] für die Staaten Washington und Oregon. Gemäß der DrilldownLevel-Funktion enthält das Resultset auch Elemente auf der nächsten Ebene nach unten, [Postleitzahlen].

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]  

Beispiel 4– einschließlich berechneter Elemente

Das letzte Beispiel zeigt einen berechneten Member, der am unteren Rand des Resultsets angezeigt wird, wenn Sie das flag include_calculated_members hinzufügen. Beachten Sie, dass das Flag als vierter Parameter festgelegt ist.

Dieses Beispiel funktioniert, weil das berechnete Element sich auf derselben Ebene befindet wie die nicht berechneten Elemente. Das berechnete Element [West Coast] ist aus den Elementen aus [United States] und allen Elementen aus einer Ebene unter [United States] zusammengesetzt.

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]  

Wenn Sie nur das Flag entfernen und die Abfrage erneut ausführen, erhalten Sie die gleichen Ergebnisse, nur ohne das berechnete Element [West Coast].

Weitere Informationen

MDX-Funktionsreferenz (MDX)