Zamówienie (MDX)

Układa członków określonego zbioru, opcjonalnie zachowując lub łamiąc hierarchię.

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

Arguments

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

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

String_Expression
Poprawne wyrażenie w ciągu danych, które zazwyczaj jest poprawnym wyrażeniem wielowymiarowych (MDX) współrzędnych komórek zwracających liczbę wyrażoną jako ciąg znaków.

Remarks

Funkcja Order może być hierarchiczna (zgodnie z użyciem flagi ASC lub DESC ) lub niehierarchiczna (zgodnie z użyciem flagi BASC lub BDESC ; B oznacza "break hierarchy"). Jeśli określono ASC lub DESC , funkcja Order najpierw układa członków zgodnie z ich pozycją w hierarchii, a następnie porządkuje każdy poziom. Jeśli określono BASC lub BDESC , funkcja Order układa członków w zbiorze bez względu na hierarchię. W żadnym flagu nie jest określona, domyślnym jest ASC .

Jeśli funkcja Order jest używana z zbiorem, w którym dwie lub więcej hierarchii są połączone krzyżowo, a flaga DESC jest używana, uporządkowane są tylko członki ostatniej hierarchii w zbiorze. Jest to zmiana względem Analysis Services 2000, gdzie wszystkie hierarchie w zbiorze były uporządkowane.

Examples

Poniższy przykład zwraca z sześcianu Adventure Works liczbę zleceń resellerskich dla wszystkich kwartałów kalendarzowych z hierarchii Kalendarza na wymiarze Dat. Funkcja Porządku przestawia zbiór dla osi WIERSZY. Funkcja Order uporządkowuje zbiór według [Reseller Order Count] hierarchicznego porządku malejącego, określonego przez hierarchię [Calendar] .

SELECT
  Measures.[Reseller Order Count] ON COLUMNS,
  Order(
    [Date].[Calendar].[Calendar Quarter].MEMBERS,
    Measures.[Reseller Order Count],
    DESC
  ) ON ROWS
FROM [Adventure Works]

Zwróć uwagę, że w tym przykładzie, gdy flaga DESC zostaje zmieniona na BDESC, hierarchia zostaje przerwana i lista kwartałów kalendarzowych zwracana jest bez względu na hierarchię:

SELECT
  Measures.[Reseller Order Count] ON COLUMNS,
  Order (
    [Date].[Calendar].[Calendar Quarter].MEMBERS,
    Measures.[Reseller Order Count],
    BDESC
  ) ON ROWS
FROM [Adventure Works]

Poniższy przykład zwraca miarę sprzedaży resellerów dla pięciu najlepiej sprzedających się podkategorii produktów, niezależnie od hierarchii, na podstawie zysku brutto resellera. Funkcja podzbioru służy do zwracania tylko pierwszych 5 krotek w zbiorze po uporządkowaniu wyniku za pomocą funkcji porządku .

SELECT Subset
  (
    Order
      (
        [Product].[Product Categories].[SubCategory].members,
        [Measures].[Reseller Gross Profit], 
        BDESC
      ), 0, 5
  ) ON 0
FROM [Adventure Works]

Poniższy przykład wykorzystuje funkcję Rank do szeregowania członków hierarchii Miasta na podstawie miary Reseller Sales Amount, a następnie wyświetla ich w kolejności rankingowej. Używając funkcji Order do pierwszego uporządkowania zbioru członków hierarchii Miasta, sortowanie odbywa się tylko raz, a następnie następuje liniowy skan przed prezentacją w porządku sortowanym.

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]  

Poniższy przykład zwraca liczbę iloczynów w zbiorze, które są unikalne, używając funkcji Porządku do uporządkowania niepustych krotek przed użyciem funkcji Filtr. Funkcja CurrentOrdinal służy do porównywania i eliminowania powiązań.

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]  

Aby zrozumieć, jak flaga DESC działa z zestawami krotk, najpierw rozważmy wyniki następującego zapytania:

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

Na osi Wiersze widać, że grupy Terytorium Sprzedaży zostały uporządkowane w kolejności malejącej według kwoty podatku, w następujący sposób: Ameryka Północna, Europa, Pacyfik, NA. Teraz zobaczmy, co się stanie, jeśli połączymy zestaw grup Stref Sprzedaży z zestawem Podkategorii Produktów i zastosujemy funkcję Zamówienie w ten sam sposób, w następujący sposób:

  
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]  
  

Podczas gdy zestaw podkategorii produktów został uporządkowany w malejącej, hierarchicznej kolejności, grupy terytoriów sprzedaży nie są teraz posortowane i pojawiają się w kolejności, w jakiej pojawiają się w hierarchii: Europa, Ameryka Północna i Pacyfik. Dzieje się tak, ponieważ sortowana jest tylko ostatnia hierarchia w zbiorze krotek, podkategorie produktowe. Aby odtworzyć zachowanie Analysis Services 2000, użyj serii zagnieżdżonych funkcji Generujących , aby posortować każdy zbiór przed jego krzyżowym połączeniem, na przykład:

  
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]