TopPercent (MDX)

Sortuje zbiór w kolejności malejącej i zwraca zbiór krotek o najwyższych wartościach, których łączna suma jest równa lub większa od określonego procentu.

Syntax

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

Arguments

Wyrażenie_docelowe
Poprawne wyrażenie z wyrażeń wielowymiarowych (MDX), które zwraca zbiór.

Procent
Poprawne wyrażenie liczbowe, które określa procent krotek, które mają zostać zwrócone.

Important

Procent musi być wartością dodatnią; wartości ujemne generują błąd.

Numeric_Expression
Poprawne wyrażenie liczbowe, które zazwyczaj jest wyrażeniem wielowymiarowych (MDX) współrzędnych komórek zwracających liczbę.

Remarks

Funkcja TopPercent oblicza sumę określonego wyrażenia liczbowego ocenionego na określonym zbiorze, sortując go w kolejności malejącej. Funkcja zwraca następnie elementy o najwyższej wartości, których skumulowany procent od całkowitej sumy wynosi co najmniej określony procent. Funkcja ta zwraca najmniejszy podzbiór zbioru, którego łączna suma wynosi co najmniej określony procent. Zwrócone elementy są uporządkowane od największego do najmniejszego.

Warning

Jeśli Numeric_Expression zwróci dowolną wartość ujemną, TopPercent zwraca tylko jeden (1) wiersz.

Zobacz drugi przykład, aby szczegółowo przedstawić to zachowanie.

Important

Podobnie jak funkcja BottomPercent , funkcja TopPercent zawsze łamie hierarchię.

Examples

A. Zwrot TopPercent

Poniższy przykład zwraca najlepsze miasta, które pomogły znaleźć się w pierwszej dziesiątce% sprzedaży resellerów w kategorii Rower. Wynik jest sortowany w kolejności malejącej, zaczynając od miasta o najwyższej wartości sprzedaży.

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])  

Powyższe wyrażenie daje następujące wyniki:

Miejscowość Wartość sprzedaży odsprzedawcy
Toronto $3,508,904,84
Londyn $1,521,530.09
Seattle $1,209,418.16
Paryż $1,170,425.18

Oryginalny zestaw danych można uzyskać za pomocą następującego zapytania i zwraca 588 wierszy:

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. Zrozum wpływ wartości ujemnych

Poniższy przewodnik pomoże zrozumieć wpływ wartości ujemnych na Numeric_Expression. Najpierw zbudujmy kontekst, w którym możemy przedstawić zachowanie.

Poniższe zapytanie zwraca tabelę resellerów z "Kwotą sprzedaży", "Całkowitym kosztem produktu" oraz "Zyskiem brutto", uporządkowaną w kolejności malejącej względem zysku. Prosimy pamiętać, że zysk ma wyłącznie ujemne wartości; Najmniejsza strata pojawia się na górze.

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]  
  

Powyższe zapytanie zwraca następujące wyniki; Rzędy ze środkowej części zostały usunięte dla większej czytelności.

Rowery turystyczne Wartość sprzedaży odsprzedawcy Całkowity koszt produktu resellera Zysk brutto resellera
Touring-2000 Blue, 50 $157,444.56 $163,112.57 ($5,668.01)
Trasa koncertowa – Blue 2000, 46 $321,027.03 333 021,50 dolarów ($11,994.47)
Touring-3000 Blue, 62 87 773,61 dolarów 100 133,52 dolarów ($12,359.91)
... ... ... ...
Touring-1000 Yellow, 46 $1,016,312.83 $1,234,454.27 ($218,141.44)
Touring-1000 Żółty, 60 $1,184,363.30 1 443 407,51 dolarów ($259,044.21)

Gdybyś miał przedstawić 100 najlepszych% rowerów według zysku, napisałbyś pytanie w stylu:

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]  
  

Prosimy zauważyć, że zapytanie wymaga stu procent (100%); To oznacza, że wszystkie wiersze powinny zostać zwrócone. Jednak ponieważ w Numeric_Expression są wartości ujemne , zwracany jest tylko jeden wiersz.

Rowery turystyczne Wartość sprzedaży odsprzedawcy Całkowity koszt produktu resellera Zysk brutto resellera
Touring-2000 Blue, 50 $157,444.56 $163,112.57 ($5,668.01)