مشاركة عبر


aggregate دالة

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime

تجميع العناصر في صفيف باستخدام مجمع مخصص. هذه الدالة هي مرادف لدالة التقليل.

بناء الجملة

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

الوسيطات

  • expr: تعبير صفيف.
  • start: قيمة أولية من أي نوع.
  • merge: دالة lambda تستخدم لتجميع العنصر الحالي.
  • finish: دالة lambda اختيارية تستخدم لإنهاء التجميع.

المرتجعات

يطابق نوع النتيجة نوع النتيجة لدالة finish lambda إذا كان موجودا أو start.

تطبيق تعبير على حالة أولية وكافة العناصر في الصفيف، وتقليل هذا إلى حالة واحدة. يتم تحويل الحالة النهائية إلى النتيجة النهائية عن طريق تطبيق دالة finish .

تأخذ الدالة merge معلمتين. الأول هو المجمع، والثاني العنصر الذي سيتم تجميعه. يجب أن يكون المجمع والنتيجة من نوع start. تأخذ الدالة الاختيارية finish معلمة واحدة وترجع النتيجة النهائية.

الأمثلة

> 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