Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ordnet Mitglieder einer bestimmten Menge an, wobei optional die Hierarchie erhalten oder gebrochen wird.
Syntax
Numeric expression syntax
Order(Set_Expression, Numeric_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
String expression syntax
Order(Set_Expression, String_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
Argumente
Set_Expression
Ein gültiger Multidimensional Expressions (MDX)-Ausdruck, der eine Menge zurückgibt.
Numeric_Expression
Ein gültiger numerischer Ausdruck, der typischerweise ein Multidimensional Expressions (MDX)-Ausdruck von Zellkoordinaten ist, die eine Zahl zurückgeben.
String_Expression
Ein gültiger String-Ausdruck, der typischerweise ein gültiger Multidimensional Expressions (MDX)-Ausdruck von Zellkoordinaten ist, der eine als String ausgedrückte Zahl zurückgibt.
Bemerkungen
Die Order-Funktion kann entweder hierarchisch sein (wie durch die Verwendung des ASC- oder DESC-Flags angegeben) oder nicht-hierarchisch (wie durch die Verwendung der BASC- oder BDESC-Flag angegeben ; B steht für "break hierarchy"). Wenn ASC oder DESC angegeben ist, ordnet die Order-Funktion zunächst die Mitglieder nach ihrer Position in der Hierarchie an und ordnet dann jede Ebene. Wenn BASC oder BDESC angegeben ist, ordnet die Order-Funktion Mitglieder in der Menge ohne Rücksicht auf die Hierarchie. Wenn kein Flag angegeben ist, ist ASC der Standard.
Wenn die Order-Funktion mit einer Menge verwendet wird, in der zwei oder mehr Hierarchien vernetzt sind, und die DESC-Flagge verwendet wird, werden nur die Mitglieder der letzten Hierarchie in der Menge geordnet. Dies ist eine Änderung gegenüber Analysis Services 2000, als alle Hierarchien im Set geordnet waren.
Beispiele
Das folgende Beispiel liefert vom Adventure Works-Würfel die Anzahl der Reseller-Bestellungen für alle Kalenderquartale aus der Kalenderhierarchie in der Datumsdimension. Die Order-Funktion ordnet die Menge für die ROWS-Achse um. Die Order-Funktion ordnet die Menge in [Reseller Order Count] absteigender hierarchischer Reihenfolge, wie durch die Hierarchie [Calendar] bestimmt.
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order(
[Date].[Calendar].[Calendar Quarter].MEMBERS,
Measures.[Reseller Order Count],
DESC
) ON ROWS
FROM [Adventure Works]
Beachten Sie, wie in diesem Beispiel die Hierarchie gebrochen wird, wenn die DESC-Flagge in BDESC geändert wird, und die Liste der Calendar Quarters ohne Rücksicht auf die Hierarchie zurückgegeben wird:
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order (
[Date].[Calendar].[Calendar Quarter].MEMBERS,
Measures.[Reseller Order Count],
BDESC
) ON ROWS
FROM [Adventure Works]
Das folgende Beispiel liefert die Reseller Sales Measure für die fünf meistverkauften Unterkategorien von Produkten, unabhängig von der Hierarchie, basierend auf dem Reseller Gross Profit. Die Teilmengenfunktion wird verwendet, um nur die ersten 5 Tupel der Menge zurückzugeben, nachdem das Ergebnis mit der Order-Funktion geordnet wurde.
SELECT Subset
(
Order
(
[Product].[Product Categories].[SubCategory].members,
[Measures].[Reseller Gross Profit],
BDESC
), 0, 5
) ON 0
FROM [Adventure Works]
Das folgende Beispiel verwendet die Rangfunktion , um die Mitglieder der Stadthierarchie basierend auf dem Maß Reseller Sales Amount zu bewerten und sie dann in der Reihenfolge anzuzeigen. Indem die Order-Funktion verwendet wird, um die Menge der Mitglieder der Stadthierarchie zuerst zu ordnen, erfolgt die Sortierung nur einmal und anschließend ein linearer Scan, bevor sie in sortierter Reihenfolge präsentiert 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]
Das folgende Beispiel gibt die Anzahl der Produkte in der Menge zurück, die eindeutig sind, wobei die Order-Funktion verwendet wird, um die nicht-leeren Tupel zu ordnen, bevor die Filterfunktion verwendet wird. Die Funktion CurrentOrdinal wird verwendet, um Gleichstellungen zu vergleichen und zu eliminieren.
WITH MEMBER [Measures].[PrdTies] AS Count
(Filter
(Order
(NonEmpty
([Product].[Product].[Product].Members
, {[Measures].[Reseller Order Quantity]}
)
, [Measures].[Reseller Order Quantity]
, BDESC
) AS OrdPrds
, (OrdPrds.CurrentOrdinal < OrdPrds.Count
AND [Measures].[Reseller Order Quantity] =
( [Measures].[Reseller Order Quantity]
, OrdPrds.Item
(OrdPrds.CurrentOrdinal
)
)
)
OR (OrdPrds.CurrentOrdinal > 1
AND [Measures].[Reseller Order Quantity] =
([Measures].[Reseller Order Quantity]
, OrdPrds.Item
(OrdPrds.CurrentOrdinal-2)
)
)
)
)
SELECT {[Measures].[PrdTies]} ON 0
FROM [Adventure Works]
Um zu verstehen, wie das DESC-Flag mit Mengen von Tupeln funktioniert, betrachten Sie zunächst die Ergebnisse folgender Abfrage:
SELECT
{[Measures].[Tax Amount]} ON 0,
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
,[Measures].[Tax Amount], DESC)
ON 1
FROM [Adventure Works]
Auf der Reihenachse sieht man, dass die Verkaufsgebiete in absteigender Reihenfolge nach Steuerbeträge geordnet sind, wie folgt: Nordamerika, Europa, Pazifik, Nordamerika. Sehen Sie sich nun an, was passiert, wenn wir die Menge der Vertriebsgebietsgruppen mit der Menge der Produktunterkategorien kombinieren und die Bestellfunktion auf die gleiche Weise anwenden, wie folgt:
SELECT
{[Measures].[Tax Amount]} ON 0,
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
*
{[Product].[Product Categories].[subCategory].Members}
,[Measures].[Tax Amount], DESC)
ON 1
FROM [Adventure Works]
Während die Menge der Produktunterkategorien in absteigender, hierarchischer Reihenfolge geordnet wurde, sind die Vertriebsgebietsgruppen nun nicht sortiert und erscheinen in der Reihenfolge, in der sie in der Hierarchie erscheinen: Europa, Nordamerika, Nordamerika und Pazifik. Dies liegt daran, dass nur die letzte Hierarchie in der Menge der Tupel, Produktunterkategorien, sortiert wird. Um das Verhalten von Analysis Services 2000 zu reproduzieren, verwenden Sie eine Reihe verschachtelter Genereer-Funktionen , um jede Menge vor der Kreuzverbindung zu sortieren, zum Beispiel:
SELECT
{[Measures].[Tax Amount]} ON 0,
GENERATE(
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
,[Measures].[Tax Amount], DESC)
,
ORDER(
[Sales Territory].[Sales Territory].CURRENTMEMBER
*
{[Product].[Product Categories].[subCategory].Members}
,[Measures].[Tax Amount], DESC))
ON 1
FROM [Adventure Works]