Sıra (MDX)

Belirli bir küme üyelerini düzenler, isteğe bağlı olarak hiyerarşiyi koruyor veya bozur.

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

Set_Expression
Bir küme döndüren geçerli bir Çok Boyutlu İfadeler (MDX) ifadesi.

Numeric_Expression
Genellikle hücre koordinatlarının çok boyutlu ifadeleri (MDX) olarak bir sayı döndüren geçerli sayısal ifadedir.

String_Expression
Genellikle hücre koordinatlarının geçerli Çok Boyutlu İfadeleri (MDX) ifadesi olan geçerli bir dizi ifadesidir ve bir sayı dize olarak ifade edilir.

Remarks

Order fonksiyonu ya hiyerarşik (ASC veya DESC bayrağı kullanılarak belirtildiği gibi) ya da hiyerarşik olmayan (BASC veya BDESC bayrağı kullanılarak belirtildiği gibi; B "break hiyerarşisi" anlamına gelir) olabilir. ASC veya DESC belirtilirse, Order fonksiyonu önce üyeleri hiyerarşideki konumlarına göre düzenler, ardından her seviyeyi sıralar. Eğer BASC veya BDESC belirtilirse, Order fonksiyonu hiyerarşi dikkate alınmadan kümedeki üyeleri düzenler. Hiçbir bayrak belirtilmediğinde, ASC varsayılan olarak belirlenmiştir.

Eğer Order fonksiyonu, iki veya daha fazla hiyerarşinin çapraz birleştirildiği bir küme ile ve DESC bayrağı kullanılırsa, kümedeki son hiyerarşinin üyeleri sıralanır. Bu, Analysis Services 2000'de tüm hiyerarşilerin sıralandığı dönemden bir değişikliktir.

Examples

Aşağıdaki örnek, Adventure Works küpünden, Tarih boyutundaki Takvim hiyerarşisinden tüm Takvim Çeyrekleri için yeniden satıcı sipariş sayısını geri getirir. Order fonksiyonu, kümeyi ROWS ekseni için yeniden düzenler. Order fonksiyonu, [Reseller Order Count] kümeyi hiyerarşi tarafından belirlenen azalan hiyerarşik sırayla [Calendar] sıralar.

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

Bu örnekte, DESC bayrağı BDESC olarak değiştirildiğinde hiyerarşi bozulur ve Takvim Çeyrekleri listesi hiyerarşi dikkate alınmadan geri döner:

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

Aşağıdaki örnek, hiyerarşi açısından en çok satılan beş ürün alt kategorisi için Satıcı Satış Ölçütü'nü geri getirmektedir; bu, Satıcı Brüt Kârına dayanmaktadır. Alt küme fonksiyonu, sonuç sıralandıktan sonra kümedeki ilk 5 tuple'ı döndürmek için kullanılır.

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

Aşağıdaki örnek, Sıralama fonksiyonunu kullanarak Şehir hiyerarşisindeki üyeleri Satıcı Satış Miktarı ölçüsüne göre sıralanmış şekilde sıralanmış şekilde gösterir. Sıra fonksiyonu kullanılarak Şehir hiyerarşisindeki üyeler setini önce sıralar, sıralama sadece bir kez yapılır ve ardından doğrusal tarama yapılır ve sıralanmış sırayla sunulur.

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]  

Aşağıdaki örnek, Filtre fonksiyonu kullanılmadan önce boş olmayan tuple'ları sıralamak için Order fonksiyonu kullanılarak kümedeki benzersiz çarpımların sayısını geri döndürür. CurrentOrdinal fonksiyonu, beraberlikleri karşılaştırmak ve ortadan kaldırmak için kullanılır.

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]  

DESC bayrağının tuple kümeleriyle nasıl çalıştığını anlamak için önce aşağıdaki sorgu sonuçlarını ele alın:

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

Satır ekseninde, Satış Bölgesi Gruplarının Vergi Miktarına göre azalan sırayla sıralandığını görebilirsiniz: Kuzey Amerika, Avrupa, Pasifik, NA. Şimdi, Satış Bölgesi Grupları kümesini Ürün Alt Kategorileri kümesiyle çapraz birleştirirsek ve Sipariş fonksiyonunu aşağıdaki gibi uygularsak ne olacağını görelim:

  
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]  
  

Ürün Alt Kategorileri kümesi azalan, hiyerarşik sırayla sıralanmış olsa da, Satış Bölgesi Grupları artık sıralanmamış ve hiyerarşideki sırayla görünür: Avrupa, NA, Kuzey Amerika ve Pasifik. Bunun nedeni, tuples kümesindeki yalnızca son hiyerarşi, Ürün Alt Kategorileri'nin sıralanmasıdır. Analysis Services 2000'in davranışını yeniden üretmek için, her küme çapraz birleştirilmeden önce sıralamak için bir dizi iç içe Generate fonksiyonu kullanın, örneğin:

  
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]