الوصف
تتضمّن جميع الدوال التجميعية في ClickHouse حالةً وسيطة خاصة بالتنفيذ يمكن إجراء تسلسل لها إلى نوع البياناتAggregateFunction وتخزينها في جدول. وعادةً ما يتم ذلك
باستخدام العرض المادي.
يوجد مُعدِّلان من مُعدِّلات الدوال التجميعية
يُستخدمان عادةً مع النوع AggregateFunction:
- مُعدِّل الدالة التجميعية
-State، الذي عند إلحاقه باسم دالة تجميعية، يُنتج الحالات الوسيطة منAggregateFunction. - مُعدِّل الدالة التجميعية
-Merge، الذي يُستخدم للحصول على النتيجة النهائية لعملية التجميع من الحالات الوسيطة.
الصيغة
aggregate_function_name- اسم دالة تجميعية. إذا كانت الدالة ذات معاملات، فيجب تحديد معاملاتها أيضًا.types_of_arguments- أنواع وسائط الدالة التجميعية.
الاستخدام
إدراج البيانات
لإدراج البيانات في جدول يحتوي على أعمدة من النوعAggregateFunction، يمكنك
استخدام INSERT SELECT مع الدوال التجميعية ومُعدِّل
الدوال التجميعية -State.
على سبيل المثال، للإدراج في أعمدة من النوع AggregateFunction(uniq, UInt64) و
AggregateFunction(quantiles(0.5, 0.9), UInt64)، ستستخدم
الدوال التجميعية التالية مع المُعدِّلات.
uniq وquantiles، فإن uniqState وquantilesState
(مع إلحاق المُعدِّل -State) تُرجعان الحالة بدلًا من القيمة النهائية.
وبعبارة أخرى، تُرجعان قيمة من النوع AggregateFunction.
في نتائج استعلام SELECT، يكون للقيم من النوع AggregateFunction
تمثيلات ثنائية خاصة بالتنفيذ في جميع تنسيقات الإخراج في ClickHouse.
يوجد إعداد خاص على مستوى الجلسة باسم aggregate_function_input_format يتيح إنشاء الحالة من قيم الإدخال.
وهو يدعم التنسيقات التالية:
state- الحالة المُسلسلة (وهو التنسيق الافتراضي). إذا فرّغت البيانات، على سبيل المثال، إلى تنسيقTabSeparatedباستخدام استعلامSELECT، فيمكن تحميل هذا التفريغ مرة أخرى باستخدام استعلامINSERT.value- يتوقع التنسيق قيمة واحدة لوسيطة الدالة التجميعية، أو في حال وجود عدة وسيطات،Tupleمنها؛ وتُجمَّع القيمة لتكوين الحالة.array- يتوقع التنسيقArrayمن القيم، كما هو موضح في خيارvalueأعلاه؛ وتُجمَّع جميع عناصر المصفوفة لتكوين الحالة.
value وarray، يُقرأ العمود كما لو كان من نوع القيم (T أو Tuple(T1, T2) أو Array منها)،
بالتمثيل الذي يستخدمه تنسيق الإدخال لذلك النوع. ويعمل هذا بالطريقة نفسها في كل تنسيقات الإدخال، من CSV وJSONEachRow إلى RowBinary وParquet.
اختيار البيانات
عند اختيار البيانات من جدولAggregatingMergeTree، استخدم عبارة GROUP BY
ونفس الدوال التجميعية التي استخدمتها عند إدخال البيانات، ولكن استخدم
المُعدِّل -Merge.
تأخذ دالة تجميعية المُلحَق بها المُعدِّل -Merge مجموعةً من
حالات التجميع، وتدمجها، ثم تُرجع نتيجة تجميع البيانات بالكامل.
على سبيل المثال، يُرجع الاستعلامان التاليان النتيجة نفسها:
مثال على الاستخدام
راجع وصف محرك AggregatingMergeTree.محتوى مرتبط
- مدونة: استخدام مُعدِّلات التجميع في ClickHouse للمصفوفات والخرائط والحالات
- المُعدِّل MergeState.
- المُعدِّل State.