Aracılığıyla paylaş


aggregate işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Özel toplayıcı kullanarak dizideki öğeleri toplar. Bu işlev, reduce işlevi için bir eş anlamlıdır.

Söz dizimi

aggregate(expr, start, merge [, finish])

Argümanlar

  • expr: ARRAY ifadesi.
  • start: Herhangi bir türün başlangıç değeri.
  • merge: Geçerli öğeyi birleştirmek için kullanılan lambda işlevi.
  • finish: Toplama işlemini sonlandırmak için kullanılan isteğe bağlı lambda işlevi.

İadeler

Sonuç türü, veya finishvarsa lambda işlevinin start sonuç türüyle eşleşir.

Bir ifadeyi ilk duruma ve dizideki tüm öğelere uygular ve bunu tek bir duruma küçültür. Son durum, bir finish işlev uygulanarak nihai sonucta dönüştürülür.

merge işlevi iki parametre alır. Birincisi akümülatör, ikincisi toplanacak öğedir. Akümülatör ve sonuç türünde startolmalıdır. İsteğe bağlı finish işlev bir parametre alır ve nihai sonucu döndürür.

Örnekler

> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
 60

> SELECT aggregate(array(1, 2, 3, 4),
                   named_struct('sum', 0, 'cnt', 0),
                   (acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
                   acc -> acc.sum / acc.cnt) AS avg
 2.5