DrilldownLevel (MDX)
Bringt die Elemente einer Menge auf eine Ebene unter der niedrigsten in der Menge vertretenen Ebene herunter.
Das Festlegen der Ebene, auf die ein Drilldown ausgeführt werden soll, ist optional. Wenn Sie eine Ebene festlegen, können Sie entweder level expression oder index level verwenden. Diese Argumente schließen sich gegenseitig aus. Wenn berechnete Elemente in der Abfrage vorhanden sind, können Sie ein Argument festlegen, um sie im Rowset einzuschließen.
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 benennt, auf die die Elemente heruntergebracht werden sollen. Wenn Sie einen Ebenenausdruck festlegen, überspringen Sie das im Folgenden aufgeführte Indexargument.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 diese Indexebene anstelle von Level_Expression verwenden, um die Ebene, auf die die Elemente heruntergebracht werden sollen, explizit zu benennen.Include_Calc_Members
(Optional). Ein Flag, das anzeigt, ob berechnete Elemente in die Ebene aufgenommen werden sollen, auf die die Elemente heruntergebracht werden.
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.
Bei einer hierarchischen Datenstruktur mit mehreren Ebenen können Sie explizit eine Ebene wählen, auf die die Elemente heruntergebracht werden sollen. Es gibt zwei einander ausschließende Arten, diese Ebene festzulegen. Der erste Ansatz ist die Festlegung des Arguments level_expression mithilfe eines MDX-Ausdrucks, der die Ebene zurückgibt. Optional kann das Argument index mithilfe eines numerischen Ausdrucks festgelegt werden, der die Nummer der Ebene angibt.
Wenn ein Mengenausdruck 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 wird und sich auf der betreffenden 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ächstniedrigeren Ebene der Hierarchie abgerufen werden, auf die in der angegebenen 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 mithilfe des Adventure Works-Cubes im MDX-Abfragefenster in SSMS die folgenden Beispiele ausprobieren.
Beispiel 1 – veranschaulicht die minimale Syntax
Das erste Beispiel zeigt die minimale Syntax für DrilldownLevel. Das einzige erforderliche Argument ist ein festgelegter Ausdruck. Bitte beachten Sie, dass Sie bei der Ausführung dieser Abfrage das übergeordnete Element [All Categories] und die Elemente der nächstniedrigeren Ebene: [Accessories], [Bikes] usw. erhalten. Obwohl dieses Beispiel recht einfach ist, veranschaulicht es den Zweck der Funktion DrilldownLevel, nämlich das Herunterbringen der Elemente auf die nächstniedrigere Ebene.
SELECT DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]}}) ON COLUMNS
FROM [Adventure Works]
Beispiel 2 – alternative Syntax mit einer expliziten Indexebene
Dieses Beispiel veranschaulicht die alternative Syntax, in der die Indexebene mithilfe eines numerischen Ausdrucks festgelegt wird. In diesem Fall ist die Indexebene 0. Dies ist die niedrigste Ebene für einen nullbasierten Index.
SELECT
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS
FROM [Adventure Works]
Bitte beachten Sie, dass das ausgegebene Ergebnis mit der vorherigen Abfrage identisch ist. Als allgemeine Regel gilt: Eine Festlegung der Indexebene ist nicht nötig, außer wenn Sie die Elemente auf eine bestimmte Ebene herunterbringen möchten, die nicht die nächstniedrigere ist. Führen Sie die vorherige Abfrage erneut durch, und setzen Sie den Indexwert auf 1 und anschließend auf 2. Wenn der Indexwert auf 1 gesetzt ist, startet der Drilldown auf der zweiten Ebene in der Hierarchie. Wenn der Indexwert auf 2 gesetzt, startet der Drilldown auf der dritten Ebene, der höchsten Ebene in diesem Beispiel. Je höher der numerische Ausdruck ist, desto höher ist die Indexebene.
Beispiel 3 – veranschaulicht einen Ebenenausdruck
Das nächste Beispiel zeigt, wie ein Ebenenausdruck verwendet wird. Bei einer Menge mit einer hierarchischen Struktur können Sie mit einem Ebenenausdruck eine Ebene in der Hierarchie wählen, auf der der Drilldown starten soll.
In diesem Beispiel ist die Ebene, auf der der Drilldown startet, [City] als zweites Argument der Funktion DrilldownLevel. Wenn Sie diese Abfrage ausführen, startet der Drilldown auf der Ebene [City] für die Staaten Washington und Oregon. Mit der Funktion DrilldownLevel enthält das Ergebnis auch Elemente der nächstniedrigeren Ebene namens [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 – Verwendung berechneter Elemente
Das letzte Beispiel zeigt ein berechnetes Element, das am Ende des ausgegebenen Ergebnisses erscheint, wenn Sie das Flag include_calculated_members hinzufügen. Bitte beachten Sie, dass das Flag als vierter Parameter angegeben ist.
Dieses Beispiel funktioniert, da das berechnete Element sich auf derselben Ebene befindet wie die nicht berechneten Elemente. Das berechnete Elemente [West Coast] setzt sich aus Elementen aus [United States] plus allen Elementen der nächstniedrigeren Ebene unter [United States] zusammen.
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 dieselben Ergebnisse, allerdings ohne das berechnete Element [West Coast].