الوصف
يخزّن نوع البيانات 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- أنواع وسيطات الدالة التجميعية.
الدوال المدعومة
الدوال التجميعية التالية مدعومة:
anyany_respect_nullsanyLastanyLast_respect_nullsminmaxsumsumWithOverflowgroupBitAndgroupBitOrgroupBitXorgroupArrayArraygroupUniqArrayArraygroupUniqArrayArrayMapsumMap(sumMappedArrays)minMap(minMappedArrays)maxMap(maxMappedArrays)
مثال
CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;- مدونة: استخدام مُركِّبات التجميع في ClickHouse
- النوع AggregateFunction.