الوصف
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 باسم الدالة.
الصياغة
aggregate_function_name- اسم دالة تجميعية.Type- أنواع وسيطات الدالة التجميعية.
الدوال المدعومة
anyany_respect_nullsanyLastanyLast_respect_nullsminmaxsumsumWithOverflowgroupBitAndgroupBitOrgroupBitXorgroupArrayArraygroupUniqArrayArraygroupUniqArrayArrayMapsumMap(sumMappedArrays)minMap(minMappedArrays)maxMap(maxMappedArrays)
تكون قيم
SimpleAggregateFunction(func, Type) من نفس Type،
لذلك، بخلاف النوع AggregateFunction، لا حاجة إلى تطبيق
المُركِّبات -Merge/-State.يوفّر النوع SimpleAggregateFunction أداءً أفضل من AggregateFunction
للدوال التجميعية نفسها.مثال
- مدونة: استخدام مُركِّبات التجميع في ClickHouse - مدونة: استخدام مُركِّبات التجميع في ClickHouse
- النوع AggregateFunction.