Aracılığıyla paylaş


reduce 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, aggregate işlevi için bir eş anlamlıdır.

Söz dizimi

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

Tartışmalar

  • expr: bir ARRAY ifade.
  • start: Herhangi bir türün başlangıç değeri.
  • merge: Geçerli öğeyi toplamak 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 biriktirici, 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 reduce(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6

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

> SELECT reduce(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