Tüm Ürünler
Search
Belge Merkezi

MaxCompute:ARRAY_SORT

Son Güncelleme:Oct 04, 2026

Bir karşılaştırıcı kullanarak a dizisindeki öğeleri sıralar.

Söz dizimi

array<T> array_sort(array<T> <a>, function<T, T, bigint> <comparator>)

Parametreler

  • a: Zorunludur. Bu parametre bir dizi belirtir. T içindeki array<T> ifadesi, dizideki öğelerin veri türünü belirtir. Öğeler herhangi bir veri türünde olabilir.

  • comparator: Zorunludur. Bu parametre, dizideki iki öğeyi karşılaştırmak için kullanılan yerleşik bir işlevi, kullanıcı tanımlı işlevi (UDF) veya ifadeyi belirtir.

    comparator(a, b) işleme mantığı: a, b'ye eşitse 0 döndürülür. a, b'den küçükse negatif bir tamsayı döndürülür. a, b'den büyükse pozitif bir tamsayı döndürülür. comparator(a, b) null değeri döndürürse hata oluşur.

    Önemli

    ARRAY_SORT içindeki karşılaştırma işlevleri tutarlı olmalıdır. Örnekler:

    • compare(a, b) > 0 koşulu sağlanıyorsa compare(b, a) < 0 koşulu da sağlanmalıdır.

    • compare(a, b) = 0 koşulu sağlanıyorsa compare(b, a) = 0 koşulu da sağlanmalıdır.

    • compare(a, b) < 0 koşulu sağlanıyorsa compare(b, a) > 0 koşulu da sağlanmalıdır.

    Tutarlı olmayan işlev örnekleri:

    • (left, right) -> CASE WHEN left <= right THEN -1L ELSE 0L END:

      a = 1 ve b = 1 olarak ayarlarsanız compare(a, b) işlevi -1, compare(b, a) işlevi de -1 döndürür. Karşılaştırma sonuçları çelişir ve işlevler tutarlı değildir.

    • (left, right) -> CASE WHEN left < right THEN - 1L WHEN left = right THEN 0L ELSE 1L END:

      a = NULL ve b = 1 olarak ayarlarsanız compare(a, b) işlevi 1, compare(b, a) işlevi de 1 döndürür. Karşılaştırma sonuçları çelişir ve işlevler tutarlı değildir.

Dönüş değeri

ARRAY türünde bir değer döndürülür.

Örnekler

  • Örnek 1: array(5,6,1) içindeki öğeleri sıralayın.

    SELECT array_sort(array(5,6,1),(left,right)->
                      CASE 
                       WHEN left<right THEN-1L 
                       WHEN left>right THEN 1L 
                       ELSE 0L 
                      END
                     );

    Aşağıdaki sonuç döndürülür:

    +------------+
    | _c0        |
    +------------+
    | [1,5,6]    |
    +------------+
  • Örnek 2:

    SELECT array_sort(a, (a,b)-> 
                      CASE 
                       WHEN a.a>b.a THEN 1L 
                       WHEN a.a<b.a THEN -1L 
                       ELSE 0L 
                      END)
     FROM VALUES (
      ARRAY(named_struct('a', 1, 'b', 10),
            named_struct('a', 3, 'b', 11),
            named_struct('a', 2, 'b', 12)))
      AS t(a);

    Aşağıdaki sonuç döndürülür:

    +------+
    | _c0 |
    +------+
    | [{a:1, b:10}, {a:2, b:12}, {a:3, b:11}] |
    +------+

İlgili işlevler

  • ARRAY_SORT karmaşık türde bir işlevdir. ARRAY, MAP, STRUCT ve JSON gibi karmaşık veri türlerini işlemek için kullanılan işlevler hakkında daha fazla bilgi için bkz. Karmaşık tür işlevleri.

  • Yukarıdaki örneklerde kısa çizgi ve sağ açı parantezi kombinasyonu (->) kullanılmıştır. Lambda işlevlerinde kısa çizgi ve sağ açı parantezi kombinasyonunun (->) nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Lambda işlevleri.