Freigeben über


DrilldownLevel (MDX)

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

Die Angabe der Ebene, zu der ein Drilldown ausgeführt werden soll, ist optional. Wenn Sie die Ebene festlegen, können Sie entweder einen level expression oder die index level 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).

Hinweise

Die DrilldownLevel-Funktion gibt, basierend auf den Elementen der angegebenen Menge, eine Menge von untergeordneten Elementen in einer hierarchischen Reihenfolge zurück. 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. Beim ersten Ansatz wird das level_expression-Argument festgelegt und dabei ein MDX-Ausdruck verwendet, der die Ebene zurückgibt. Ein alternativer Ansatz ist, das index-Argument festzulegen und dabei einen numerischen Ausdruck zu verwenden, der die Ebene nach Zahlen festlegt.

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 eine Menge in einer hierarchischen Reihenfolge, indem die untergeordneten Elemente nur für die Elemente auf der nächstunteren Ebene der ersten Dimension abgerufen werden, auf die in der angegebenen Menge verwiesen wird.

Mithilfe einer Abfrage der XMLA-Eigenschaft MdpropMdxDrillFunctions können Sie ermitteln, inwieweit der Server die Drillingfunktionen unterstützt. 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 – Zeigt minimale Syntax

Das erste Beispiel zeigt die minimale Syntax für DrilldownLevel. Das einzige erforderliche Argument ist ein Mengenausdruck. Beachten Sie Folgendes: Wenn Sie diese Abfrage ausführen, erhalten Sie das übergeordnete Element [All Categories] sowie Elemente der nächstniedrigeren Ebene: [Accessories], [Bikes] usw. Obwohl dieses Beispiel einfach ist, zeigt es den grundlegenden Zweck der DrilldownLevel-Funktion: Drilldown zur nächstniedrigeren Ebene.

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

Beispiel 2 – Alternative Syntax mit expliziter 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 – Zeigt 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 der Drilldown auf [City], wie das zweite Argument der DrilldownLevel-Funktion. Wenn Sie diese Abfrage ausführen, beginnt der Drilldown auf der Ebene [City] für die Staaten Washington und Oregon. Durch die DrilldownLevel-Funktion enthält das Resultset auch Elemente der nächstniedrigeren Ebene, [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]

Beispiel 4 – Einschließen berechneter Elemente

Das letzte Beispiel zeigt ein berechnetes Element, das im unteren Bereich des Resultsets angezeigt wird, wenn Sie das include_calculated_members-Flag 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].

Siehe auch

Verweis

MDX-Funktionsreferenz (MDX)