يمكن تطبيق المُركِّب State
على الدالة avg
لإنتاج حالة وسيطة من النوع AggregateFunction(avg, T)، حيث
يكون T هو النوع المحدد للمتوسط.
في هذا المثال، سنستعرض كيفية استخدام النوع AggregateFunction
مع الدالة avgState لتجميع بيانات حركة مرور الموقع الإلكتروني.
أولاً، أنشئ الجدول المصدر لبيانات حركة مرور الموقع:
أنشئ جدول التجميع الذي سيخزّن متوسطات أوقات الاستجابة. تجدر الإشارة إلى أن
avg لا يمكنه استخدام النوع SimpleAggregateFunction لأنه يستلزم حالةً معقدة
(مجموعًا وعددًا). لذا نستخدم النوع AggregateFunction:
أنشئ incremental materialized view ستعمل كـ insert trigger للبيانات الجديدة وتخزّن بيانات الحالة الوسيطة في الجدول الهدف المحدد أعلاه:
أدرج بعض البيانات الأولية في جدول المصدر، مما يُنشئ جزءًا على القرص:
أدرج المزيد من البيانات لإنشاء جزء ثانٍ على القرص:
افحص الجدول الهدف page_performance:
لاحظ أن العمود avg_response_time من النوع AggregateFunction(avg, UInt32)
ويخزّن معلومات الحالة الوسيطة. لاحظ أيضاً أن بيانات الصف الخاصة بـ
avg_response_time ليست ذات فائدة لنا، إذ نرى أحرفاً غريبة مثل
، n، F، }. هذه محاولة من الطرفية لعرض البيانات الثنائية على شكل نص.
والسبب في ذلك أن أنواع AggregateFunction تخزّن حالتها بتنسيق ثنائي
مُحسَّن للتخزين الفعّال والمعالجة، لا للقراءة البشرية. تحتوي هذه الحالة الثنائية على جميع المعلومات اللازمة
لحساب المتوسط.
للاستفادة منه، استخدم المُجمِّع Merge:
الآن نرى المتوسطات الصحيحة:
آخر تعديل في ١ يوليو ٢٠٢٦