الانتقال إلى المحتوى الرئيسي

الوصف

يخزّن نوع البيانات SimpleAggregateFunction الحالة الوسيطة لدالة تجميع، ولكن ليس حالتها الكاملة كما يفعل النوع AggregateFunction. يمكن تطبيق هذا التحسين على الدوال التي تتحقق فيها الخاصية التالية:
يمكن الحصول على نتيجة تطبيق الدالة f على مجموعة الصفوف S1 UNION ALL S2 بتطبيق f على أجزاء مجموعة الصفوف كلٌّ على حدة، ثم بتطبيق f مرة أخرى على النتائج: f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)).
تضمن هذه الخاصية أن نتائج التجميع الجزئية تكفي لحساب النتيجة المجمّعة، لذلك لا نحتاج إلى تخزين أو معالجة أي بيانات إضافية. على سبيل المثال، لا تتطلب نتيجة الدالتين min أو max أي خطوات إضافية لحساب النتيجة النهائية انطلاقًا من الخطوات الوسيطة، بينما تتطلب الدالة avg الاحتفاظ بالمجموع والعدد، ثم قسمة الأول على الثاني للحصول على المتوسط في خطوة Merge نهائية تجمع الحالات الوسيطة. تُنتَج قيم دوال التجميع عادةً باستدعاء دالة تجميع مع إلحاق المُركِّب -SimpleState باسم الدالة.

الصياغة

SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)
المعلمات
  • aggregate_function_name - اسم دالة تجميعية.
  • Type - أنواع وسيطات الدالة التجميعية.

الدوال المدعومة

الدوال التجميعية التالية مدعومة:
تكون قيم SimpleAggregateFunction(func, Type) من نفس Type، لذلك، بخلاف النوع AggregateFunction، لا حاجة إلى تطبيق المُركِّبات -Merge/-State.يوفّر النوع SimpleAggregateFunction أداءً أفضل من AggregateFunction للدوال التجميعية نفسها.

مثال

CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;
آخر تعديل في ٢٥ يونيو ٢٠٢٦