reduceدالة (SQL Databricks)

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

بناء الجملة

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

الوسيطات

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

المرتجعات

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

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

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

هذه الدالة هي مرادف للدالة التجميعية (databricks SQL).

أمثلة

> 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