Rank (MDX)
Gibt den einsbasierten Rang eines angegebenen Tupels in einer angegebenen Menge zurück.
Syntax
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )
Argumente
Tuple_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der ein Tupel zurückgibt.Set_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Menge zurückgibt.Numeric_Expression
Ein gültiger numerischer Ausdruck, bei dem es sich in der Regel um einen MDX-Ausdruck (Multidimensional Expressions) für Zellenkoordinaten handelt, der eine Zahl zurückgibt.
Hinweise
Wenn ein numerischer Ausdruck angegeben wird, bestimmt die Rank-Funktion den einsbasierten Rang für das angegebene Tupel, indem der angegebene numerische Ausdruck für das Tupel ausgewertet wird. Wenn ein numerischer Ausdruck angegeben wird, weist die Rank-Funktion Tupeln mit doppelten Werten in der Menge denselben Rang zu. Die Zuweisung desselben Ranges an doppelte Werte wirkt sich auf die Rangwerte nachfolgender Tupel in der Menge aus. Eine Menge besteht beispielsweise aus folgenden Tupeln: {(a,b), (e,f), (c,d)}. Das Tupel (a,b) weist denselben Wert auf wie das Tupel (c,d). Wenn das Tupel (a,b) den Rang "1" aufweist, liegt für (a,b) und (c,d) der Rang "1" vor. Das Tupel (e,f) verfügt jedoch über den Rang "3". In diesem Satz kann kein Tupel mit dem Rang "2" vorhanden sein.
Wenn ein numerischer Wert nicht angegeben wird, gibt die Rank-Funktion die einsbasierte Ordnungsposition des angegebenen Tupels zurück.
Die Rank-Funktion sortiert die Menge nicht.
Beispiel
Im folgenden Beispiel wird die Menge der Tupel zurückgegeben, die Kunden- und Kaufdaten enthalten. Dabei werden die Funktionen Filter, NonEmpty, Item und Rank verwendet, um das Datum des letzten Kaufes zu jedem Kunden zu finden.
WITH SET MYROWS AS FILTER
(NONEMPTY
([Customer].[Customer Geography].MEMBERS
* [Date].[Date].[Date].MEMBERS
, [Measures].[Internet Sales Amount]
) AS MYSET
, NOT(MYSET.CURRENT.ITEM(0)
IS MYSET.ITEM(RANK(MYSET.CURRENT, MYSET)).ITEM(0))
)
SELECT [Measures].[Internet Sales Amount] ON 0,
MYROWS ON 1
FROM [Adventure Works]
Im folgenden Beispiel wird die Order-Funktion anstelle der Rank-Funktion verwendet, um die Elemente der City-Hierarchie basierend auf dem Reseller Sales Amount-Measure in eine Rangfolge zu bringen und sie anschließend in der Rangreihenfolge anzuzeigen. Durch die Verwendung der Order-Funktion zum Vorsortieren der Menge der Elemente der City-Hierarchie wird die Sortierung nur ein einziges Mal durchgeführt. Anschließend folgt ein linearer Scan, nach dessen Abschluss die Elemente in der Sortierreihenfolge angezeigt werden.
WITH
SET OrderedCities AS Order
([Geography].[City].[City].members
, [Measures].[Reseller Sales Amount], BDESC
)
MEMBER [Measures].[City Rank] AS Rank
([Geography].[City].CurrentMember, OrderedCities)
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]} ON 0
,Order
([Geography].[City].[City].MEMBERS
,[City Rank], ASC)
ON 1
FROM [Adventure Works]