TopPercent (MDX)

Sortiert eine Menge in absteigender Reihenfolge und gibt eine Menge von Tupeln mit den höchsten Werten zurück, deren kumulativer Gesamtwert größer oder gleich einem angegebenen Prozentsatz ist.

Syntax

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

Argumente

Set_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Menge zurückgibt.

Percentage
Ein gültiger numerischer Ausdruck, der den Prozentsatz der zurückzugebenden Tupel angibt.

Wichtig

Prozentsatz muss ein positiver Wert sein; Negative Werte generieren einen Fehler.

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

Die TopPercent-Funktion berechnet die Summe des angegebenen numerischen Ausdrucks, der für die angegebene Menge ausgewertet wird, und sortiert den Satz in absteigender Reihenfolge. Anschließend gibt die Funktion die Elemente mit den höchsten Werten zurück, deren kumulativer Prozentsatz vom Gesamtwert mindestens dem angegebenen Prozentsatz entspricht. Diese Funktion gibt die kleinste Teilmenge einer Menge zurück, deren kumulativer Gesamtwert mindestens dem angegebenen Prozentsatz entspricht. Die zurückgegebenen Elemente werden der Größe nach absteigend sortiert.

Warnung

Wenn Numeric_Expression einen negativen Wert zurückgibt, gibt TopPercent nur eine (1) Zeile zurück.

Im zweiten Beispiel wird dieses Verhalten ausführlicher veranschaulicht.

Wichtig

Wie die BottomPercent-Funktion unterbricht die TopPercent-Funktion immer die Hierarchie.

Beispiele

A. Return TopPercent

Im folgenden Beispiel werden die Orte zurückgegeben, in denen der Wiederverkäufer die ersten 10 % seines Umsatzes in der Kategorie Bike erzielt hat. Das Ergebnis wird in absteigender Reihenfolge sortiert und beginnt mit dem Ort mit dem höchsten Umsatzwert.

SELECT [Measures].[Reseller Sales Amount] ON 0,  
TopPercent  
   ({[Geography].[Geography].[City].Members}  
   , 10  
   , [Measures].[Reseller Sales Amount]  
   ) ON 1  
FROM [Adventure Works]  
WHERE([Product].[Product Categories].[Bikes])  

Der vorangehende Ausdruck generiert die folgenden Ergebnisse:

City Reseller Sales Amount
Toronto 3.508.904,84 USD
London 1.521.530,09 USD
Seattle 1.209.418,16 USD
Paris 1.170.425,18 USD

Der ursprüngliche Datensatz kann mit der folgenden Abfrage abgerufen werden und gibt 588 Zeilen zurück:

SELECT [Measures].[Reseller Sales Amount] ON 0,  
Order  
   ({[Geography].[Geography].[City].Members}  
   , [Measures].[Reseller Sales Amount]  
   , BDESC  
   ) ON 1  
FROM [Adventure Works]  
WHERE([Product].[Product Categories].[Bikes])  
  

B. Verstehen der Auswirkungen negativer Werte

Die folgende exemplarische Vorgehensweise hilft Ihnen, die Auswirkungen negativer Werte im Numeric_Expression zu verstehen. Zuerst muss ein Kontext erzeugt werden, in dem das Verhalten demonstriert werden kann.

Die folgende Abfrage gibt eine Tabelle mit Werten für Sales Amount, Total Product Cost und Gross Profit für den Wiederverkäufer zurück. Die Tabelle ist in absteigender Reihenfolge nach Gewinnen sortiert. Da nur negative Gewinnwerte vorhanden sind, wird der geringste Verlust zuoberst angezeigt.

SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns  
     ,  ORDER( [Product].[Product Categories].[Bikes].[Touring Bikes].children, [Measures].[Reseller Gross Profit], BDESC )   ON rows  
FROM [Adventure Works]  
  

Die oben aufgeführte Abfrage gibt die folgenden Ergebnisse zurück. Zeilen im mittleren Abschnitt wurden entfernt, um die Lesbarkeit zu verbessern.

Tourenräder Reseller Sales Amount Reseller Total Product Cost Reseller Gross Profit
Touring-2000 Blue, 50 157.444,56 USD 163.112,57 USD ($5.668.01)
Touring-2000 Blau, 46 321.027,03 USD 333.021,50 USD ($11.994.47)
Touring-3000 Blau, 62 87.773,61 USD 100.133,52 USD ($12.359.91)
... ... ... ...
Touring-1000 Gelb, 46 1.016.312,83 USD 1.234.454,27 USD ($218,141,44)
Touring-1000 Yellow, 60 1.184.363,30 USD 1.443.407,51 USD ($259.044.21)

Wenn Sie nun die ersten 100 % in der Kategorie Bikes nach Gewinn ermitteln müssten, würden Sie eine mit der folgenden vergleichbare Abfrage schreiben:

SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns  
     ,  TOPPERCENT( [Product].[Product Categories].[Bikes].[Touring Bikes].children, 100,[Measures].[Reseller Gross Profit] )   ON rows  
FROM [Adventure Works]  
  

Beachten Sie, dass in der Abfrage einhundert Prozent (100 %) angefordert werden. Dies bedeutet, dass alle Zeilen zurückgegeben werden sollten. Da jedoch negative Werte im Numeric_Expression vorhanden sind, wird nur eine Zeile zurückgegeben.

Tourenräder Reseller Sales Amount Reseller Total Product Cost Reseller Gross Profit
Touring-2000 Blue, 50 157.444,56 USD 163.112,57 USD ($5.668.01)

Weitere Informationen

MDX-Funktionsreferenz (MDX)