Descendants (MDX)
Gibt eine Menge von nachfolgenden Werten eines Elements auf einer angegebenen Ebene oder in einem angegebenen Abstand zurück. Optional können nachfolgende Werte anderer Ebenen ein- oder ausgeschlossen werden.
Syntax
Member expression syntax using a level expression
Descendants(Member_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Member expression syntax using a numeric expression
Descendants(Member_Expression [ , Distance [ ,Desc_Flag ] ] )
Set expression syntax using a level expression
Descendants(Set_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Member expression syntax using a numeric expression
Descendants(Set_Expression [ , Distance [ ,Desc_Flag ] ] )
Argumente
Member_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der ein Element zurückgibt.Set_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Menge zurückgibt.Level_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Ebene zurückgibt.Distance
Ein gültiger numerischer Ausdruck, der den Abstand vom angegebenen Element angibt.Desc_Flag
Ein gültiger Zeichenfolgenausdruck, der ein Beschreibungs-Flag zur Unterscheidung möglicher Mengen von nachfolgenden Werten angibt.
Hinweise
Wenn eine Ebene angegeben wird, gibt die Descendants-Funktion eine Menge zurück, die die nachfolgenden Elemente des angegebenen Elements oder die Elemente der angegebenen Menge auf der angegebenen Ebene enthält. Optional kann zudem eine Änderung durch ein in Desc_Flag angegebenes Flag erfolgen.
Wenn Distance angegeben wird, gibt die Descendants-Funktion eine Menge zurück, die die nachfolgenden Elemente des angegebenen Elements oder die Elemente der angegebenen Menge, die sich in der Hierarchie des angegebenen Elements die angegebene Anzahl von Ebenen entfernt befinden, enthält. Optional kann zudem eine Änderung durch ein in Desc_Flag angegebenes Flag erfolgen. Das Distance-Argument dieser Funktion wird in der Regel bei unregelmäßigen Hierarchien verwendet. Wenn der angegebene Abstand null (0) ist, gibt die Funktion eine Menge zurück, die nur das angegebene Element oder die angegebene Menge enthält.
Wenn ein Mengenausdruck angegeben ist, wird die Descendants-Funktion für jedes Element in der Menge einzeln aufgelöst und die Menge erneut erstellt. Die Syntax der Descendants-Funktion ist somit funktionell gleichwertig mit der folgenden Generate-Funktion von MDX:
Wird keine Ebene oder kein Abstand angegeben, wird der Standardwert für die Ebene bestimmt, die als Argument der Funktion dient, indem die Level-Funktion (<<Member>>.Level) für das (ggf.) angegebene Element aufgerufen wird (wenn ein Element angegeben ist) bzw. indem die Level-Funktion für jedes Element der angegebenen Menge aufgerufen wird (wenn eine Menge angegeben ist). Wenn kein Ebenenausdruck, Abstand oder Flag angegeben ist, wird die Funktion ausgeführt, als wenn die folgende Syntax verwendet würde:
Descendants
(
Member_Expression ,
Member_Expression.Level ,
SELF_BEFORE_AFTER
)
Wenn eine Ebene und kein Beschreibungs-Flag angegeben ist, wird die Funktion ausgeführt, als wenn die folgende Syntax verwendet würde:
Descendants
(
Member_Expression ,
Level_Expression,
SELF
)
Durch Ändern des Wertes des Beschreibungs-Flags können Sie nachfolgende Elemente in der angegebenen Ebene bzw. dem angegebenen Abstand, untergeordnete Elemente vor und nach der angegebenen Ebene bzw. dem angegebenen Abstand (bis zum Blattknoten) sowie die untergeordneten Blattelemente unabhängig von der angegebenen Ebene bzw. dem angegebenen Abstand ein- oder ausschließen. In der folgenden Tabelle sind die im Desc_Flag-Argument zulässigen Flags beschrieben.
Flag |
Beschreibung |
---|---|
SELF |
Gibt nur nachfolgende Elemente auf der angegebenen Ebene oder in dem angegebenen Abstand zurück. Die Funktion schließt das angegebene Element ein, wenn es sich bei der angegebenen Ebene um die Ebene des angegebenen Elements handelt. |
AFTER |
Gibt nachfolgende Elemente aus allen Ebenen zurück, die der angegebenen Ebene oder dem angegebenen Abstand untergeordnet sind. |
BEFORE |
Gibt nachfolgende Elemente aus allen Ebenen zwischen dem angegebenen Element und der angegebenen Ebene oder im angegebenen Abstand zurück. Das angegebene Element wird eingeschlossen, jedoch nicht Elemente der angegebenen Ebene oder im angegebenen Abstand. |
BEFORE_AND_AFTER |
Gibt nachfolgende Elemente aus allen Ebenen zurück, die der Ebene des angegebenen Elements untergeordnet sind. Das angegebene Element wird eingeschlossen, jedoch nicht Elemente der angegebenen Ebene oder im angegebenen Abstand. |
SELF_AND_AFTER |
Gibt nachfolgende Elemente aus der angegebenen Ebene oder im angegebenen Abstand sowie alle Ebenen, die der angegebenen Ebene oder dem angegebenen Abstand untergeordnet sind, zurück. |
SELF_AND_BEFORE |
Gibt nachfolgende Elemente aus der angegebenen Ebene oder im angegebenen Abstand sowie aus allen Ebenen zwischen dem angegebenen Element und der angegebenen Ebene oder im angegebenen Abstand, einschließlich des angegebenen Elements, zurück. |
SELF_BEFORE_AFTER |
Gibt nachfolgende Elemente aus allen Ebenen zurück, die der Ebene des angegebenen Elements untergeordnet sind, sowie das angegebene Element selbst. |
LEAVES |
Gibt nachfolgende Blattelemente zwischen dem angegebenen Element und der angegebenen Ebene oder im angegebenen Abstand zurück. |
Beispiele:
Im folgenden Beispiel werden das angegebene Element (United States), die Elemente zwischen dem angegebenen Element (United States) und den Elementen der Ebene vor der angegebenen Ebene (City) zurückgegeben. Im Beispiel werden das angegebene Element selbst (United States) und die Elemente der State-Province-Ebene (die Ebene vor der City-Ebene) zurückgegeben. Die Argumente in diesem Beispiel sind kommentiert, um Ihnen das Testen dieser Funktion mit anderen Argumenten zu erleichtern.
SELECT Descendants
([Geography].[Geography].[Country].&[United States]
//, [Geography].[Geography].[Country]
, [Geography].[Geography].[City]
//, [Geography].[Geography].Levels (3)
//, SELF
//, AFTER
, BEFORE
// BEFORE_AND_AFTER
//, SELF_AND_AFTER
//, SELF_AND_BEFORE
//,SELF_BEFORE_AFTER
//,LEAVES
) ON 0
FROM [Adventure Works]
Das folgende Beispiel gibt den täglichen Durchschnitt des Measures.[Gross Profit Margin]-Measures, berechnet über die Tage jedes Monats im Geschäftsjahr 2003, aus dem Adventure Works-Cube zurück. Die Descendants-Funktion gibt eine Menge mit Tagen zurück, die anhand des aktuellen Elements der [Date].[Fiscal]-Hierarchie bestimmt werden.
WITH MEMBER Measures.[Avg Gross Profit Margin] AS Avg
(
Descendants( [Date].[Fiscal].CurrentMember,
[Date].[Fiscal].[Date]
),
Measures.[Gross Profit Margin]
)
SELECT
Measures.[Avg Gross Profit Margin] ON COLUMNS,
[Date].[Fiscal].[Month].Members ON ROWS
FROM [Adventure Works]
WHERE ([Date].[Fiscal Year].&[2003])
Im folgenden Beispiel wird ein Ebenenausdruck verwendet und Internet Sales Amount für alle Bundesstaaten in Australien sowie deren prozentualer Anteil an der Summe von Internet Sales Amount für Australien zurückgegeben. In diesem Beispiel wird die Item-Funktion zum Extrahieren des ersten (und einzigen) Tupels aus der von der Ancestors-Funktion zurückgegebenen Menge verwendet.
WITH MEMBER Measures.x AS
[Measures].[Internet Sales Amount] /
( [Measures].[Internet Sales Amount],
Ancestors
( [Customer].[Customer Geography].CurrentMember,
[Customer].[Customer Geography].[Country]
).Item (0)
), FORMAT_STRING = '0%'
SELECT {[Measures].[Internet Sales Amount], Measures.x} ON 0,
{Descendants
( [Customer].[Customer Geography].[Country].&[Australia],
[Customer].[Customer Geography].[State-Province], SELF
)
} ON 1
FROM [Adventure Works]