Freigeben über


Rank (MDX)

Aktualisiert: 12. Dezember 2006

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). Weist das Tupel (a,b) den Rang 1 auf, weisen sowohl (a,b) als auch (c,d) den Rang 1 auf. Das Tupel (e,f) weist jedoch den Rang 3 auf. Kein Tupel in der Menge kann den Rang 2 aufweisen.

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].[Customer].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]

Siehe auch

Verweis

Order (MDX)
MDX-Funktionsreferenz (MDX)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • Ein neues Beispiel wurde hinzugefügt.

17. Juli 2006

Geänderter Inhalt:
  • Syntax und Argumente wurden zur Verdeutlichung aktualisiert.
  • Aktualisierte Beispiele wurden hinzugefügt.