Order (MDX)Order (MDX)

SI APPLICA A:sìSQL Server Analysis ServicesnoAzure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesnoAzure Analysis Services

Organizza i membri di un set specificato, facoltativamente rispettando o violando la gerarchia.Arranges members of a specified set, optionally preserving or breaking the hierarchy.

SintassiSyntax


Numeric expression syntax  
Order(Set_Expression, Numeric_Expression   
[ , { ASC | DESC | BASC | BDESC } ] )  

String expression syntax  
Order(Set_Expression, String_Expression   
[ , { ASC | DESC | BASC | BDESC } ] )  

ArgomentiArguments

Set_ExpressionSet_Expression
Espressione MDX (Multidimensional Expression) valida che restituisce un set.A valid Multidimensional Expressions (MDX) expression that returns a set.

Numeric_expressionNumeric_Expression
Espressione numerica valida che in genere è un'espressione MDX (Multidimensional Expression) di coordinate di celle che restituisce un numero.A valid numeric expression that is typically a Multidimensional Expressions (MDX) expression of cell coordinates that return a number.

String_ExpressionString_Expression
Espressione stringa valida che in genere è un'espressione MDX (Multidimensional Expression) di coordinate di celle che restituisce un numero espresso come stringa.A valid string expression that is typically a valid Multidimensional Expressions (MDX) expression of cell coordinates that return a number expressed as a string.

OsservazioniRemarks

Il ordine funzione può essere di tipo gerarchica (utilizzando il ASC o DESC flag) o gerarchico (come specificato utilizzando il BASC o BDESC flag; il B è l'acronimo di "interruzione della gerarchia").The Order function can either be hierarchical (as specified by using the ASC or DESC flag) or nonhierarchical (as specified by using the BASC or BDESC flag; the B stands for "break hierarchy"). Se ASC o DESC è specificato, il ordine funzione prima organizza i membri in base alla loro posizione nella gerarchia e quindi ogni livello.If ASC or DESC is specified, the Order function first arranges the members according to their position in the hierarchy, and then orders each level. Se BASC o BDESC è specificato, il ordine funzione Organizza i membri del set indipendentemente dalla gerarchia.If BASC or BDESC is specified, the Order function arranges members in the set without regard to the hierarchy. Viene specificato alcun flag, ASC è l'impostazione predefinita.In no flag is specified, ASC is the default.

Se il ordine funzione viene utilizzata con un set in cui due o più gerarchie sono Crossjoin e DESC flag viene utilizzato, vengono ordinati solo i membri dell'ultima gerarchia del set.If the Order function is used with a set where two or more hierarchies are crossjoined, and the DESC flag is used, only the members of the last hierarchy in the set are ordered. Questa situazione rappresenta una modifica rispetto ad Analysis Services 2000 in cui tutte le gerarchie del set sono ordinate.This is a change from Analysis Services 2000 where all hierarchies in the set were ordered.

EsempiExamples

L'esempio seguente restituisce, dal Adventure Works del cubo, il numero di ordini dei rivenditori per tutti elementi Calendar Quarters dalla gerarchia Calendar nella dimensione Date. Il ordine funzione Riordina il set per l'asse ROWS.The following example returns, from the Adventure Works cube, the number of reseller orders for all Calendar Quarters from the Calendar hierarchy on the Date dimension.The Order function reorders the set for the ROWS axis. Il ordine funzione ordina il set da [Reseller Order Count] in ordine gerarchico discendente come base il [Calendar] gerarchia.The Order function orders the set by [Reseller Order Count] in descending hierarchical order as determined by the [Calendar] hierarchy.

SELECT

Measures.[Reseller Order Count] ON COLUMNS,

Order(

[Date].[Calendar].[Calendar Quarter].MEMBERS

,Measures.[Reseller Order Count]

,DESC

) ON ROWS

FROM [Adventure Works]

Si noti che in questo esempio, quando il DESC flag viene modificato in BDESC, la gerarchia viene interrotta e viene restituito l'elenco di elementi Calendar Quarters senza considerare per la gerarchia:Notice how in this example, when the DESC flag is changed to BDESC, the hierarchy is broken and the list of Calendar Quarters is returned with no regard for the hierarchy:

SELECT

Measures.[Reseller Order Count] ON COLUMNS,

Order(

[Date].[Calendar].[Calendar Quarter].MEMBERS

,Measures.[Reseller Order Count]

,BDESC

) ON ROWS

FROM [Adventure Works]

Nell'esempio seguente viene restituita la misura Reseller Sales per le cinque sottocategorie di prodotti più vendute, indipendentemente dalla gerarchia, in base a Reseller Gross Profit.The following example returns the Reseller Sales Measure for the top five selling subcategories of products, irrespective of hierarchy, based on Reseller Gross Profit. Il Subset funzione viene utilizzata per restituire solo le prime 5 tuple nel set di dopo l'ordinamento del risultato mediante la ordine (funzione).The Subset function is used to return only the first 5 tuples in the set after the result is ordered using the Order function.

SELECT Subset

(Order

([Product].[Product Categories].[SubCategory].members

,[Measures].[Reseller Gross Profit]

,BDESC

)

,0

,5

) ON 0

FROM [Adventure Works]

L'esempio seguente usa il Rank funzione per classificare i membri della gerarchia City, in base alla misura Reseller Sales Amount e visualizzarli in ordine di rango.The following example uses the Rank function to rank the members of the City hierarchy, based on the Reseller Sales Amount measure, and then displays them in ranked order. Tramite il ordine funzione per ordinare il set di membri della gerarchia City, l'ordinamento viene eseguito una sola volta e quindi seguito da un'analisi lineare prima di essere visualizzato in un criterio di ordinamento.By using the Order function to first order the set of members of the City hierarchy, the sorting is done only once and then followed by a linear scan before being presented in sorted order.

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]  

L'esempio seguente restituisce il numero di prodotti nel set che sono univoci, utilizzando il ordine funzione per ordinare le tuple non vuote prima di applicare il filtro (funzione).The following example returns the number of products in the set that are unique, using the Order function to order the non-empty tuples before utilizing the Filter function. Il CurrentOrdinal funzione viene utilizzata per confrontare ed eliminare i valori equivalenti.The CurrentOrdinal function is used to compare and eliminate ties.

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]  

Per comprendere come DESC flag i set di tuple, considerare innanzitutto i risultati della query seguente:To understand how the DESC flag works with sets of tuples, first consider the results of the following query:


SELECT  
{[Measures].[Tax Amount]} ON 0,  
ORDER(  
[Sales Territory].[Sales Territory].[Group].MEMBERS  
,[Measures].[Tax Amount], DESC)  
ON 1  
FROM [Adventure Works]  

Sull'asse delle righe è possibile vedere che i Sales Territory Groups sono stati ordinati in ordine decrescente per Quantità della tassa nel modo seguente: North America, Europe, Pacific, NA.On the Rows axis you can see that the Sales Territory Groups have been ordered in descending order by Tax Amount, as follows: North America, Europe, Pacific, NA. Osservare cosa accade se si crossjoin il set di Sales Territory Groups con il set di Product Subcategories e applicare il ordine funziona nello stesso modo, come segue:Now see what happens if we crossjoin the set of Sales Territory Groups with the set of Product Subcategories and apply the Order function in the same way, as follows:


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]  

Mentre il set Product Subcategories è stato ordinato in modo gerarchico decrescente, gli elementi Sales Territory Groups attualmente non sono ordinati e vengono visualizzati nello stesso ordine in cui sono presenti nella gerarchia, ovvero Europe, NA, North America e Pacific.While the set of Product Subcategories has been ordered in descending, hierarchical order, the Sales Territory Groups are now not sorted and appear in the order they appear on the hierarchy: Europe, NA, North America and Pacific. Questa situazione si verifica perché solo l'ultima gerarchia del set di tuple, ovvero Product Subcategories, è ordinata.This is because only the last hierarchy in the set of tuples, Product Subcategories, is sorted. Per riprodurre il comportamento di Analysis Services 2000, utilizzare una serie di annidati genera funzioni per ordinare ogni set prima che venga eseguito il cross join, ad esempio:To reproduce the behavior of Analysis Services 2000, use a series of nested Generate functions to sort each set before it is crossjoined, for example:


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]  

Vedere ancheSee Also

Riferimento alla funzione MDX ( MDX )MDX Function Reference (MDX)