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, die eine Zahl zurückgeben.
Bemerkungen
Wenn ein numerischer Ausdruck angegeben wird, bestimmt die Rank-Funktion den 1-basierten Rang für das angegebene Tupel, indem der angegebene numerische Ausdruck anhand des Tupels ausgewertet wird. Wenn ein numerischer Ausdruck angegeben wird, weist die Rank-Funktion Tupeln mit doppelten Werten im Satz den gleichen 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 kein numerischer Ausdruck angegeben wird, gibt die Rank-Funktion die 1-basierte Ordnungsposition des angegebenen Tupels zurück.
Die Rank-Funktion sortiert den Satz nicht.
Beispiel
Im folgenden Beispiel wird der Satz von Tupeln zurückgegeben, die Kunden und Kauftermine enthalten, indem die Funktionen Filter, NonEmpty, Item und Rank verwendet werden, um das letzte Datum zu ermitteln, an dem jeder Kunde einen Kauf getätigt hat.
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 Measure Reseller Sales Amount zu sortieren und dann in rangfolgerischer Reihenfolge anzuzeigen. Wenn Sie die Order-Funktion verwenden, um zuerst den Satz der Elemente der City-Hierarchie zu sortieren, erfolgt die Sortierung nur einmal, gefolgt von einer linearen Überprüfung, bevor sie in sortierter Reihenfolge angezeigt wird.
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]