quantilesTimingWeighted
استُحدث في: v1.1.0
تحسب هذه الدالة عدة كمّات لتسلسل من البيانات الرقمية عند مستويات مختلفة في الوقت نفسه، وبدقة محددة، مع مراعاة وزن كل عنصر في التسلسل.
تعادل هذه الدالة quantileTimingWeighted، لكنها تتيح حساب عدة مستويات من الكمّات في تمريرة واحدة، ما يجعلها أكثر كفاءة من استدعاء دوال الكمّ الفردية.
النتيجة حتمية (أي إنها لا تعتمد على ترتيب معالجة الاستعلام). وقد حُسِّنت هذه الدالة للعمل مع التسلسلات التي تصف توزيعات مثل أزمنة تحميل صفحات الويب أو أزمنة استجابة الخادم الخلفي.
الدقة
يكون الحساب دقيقًا إذا:
- لم يتجاوز العدد الإجمالي للقيم 5670.
- تجاوز العدد الإجمالي للقيم 5670، لكن زمن تحميل الصفحة أقل من 1024 مللي ثانية.
بخلاف ذلك، تُقرَّب نتيجة الحساب إلى أقرب مضاعف لـ 16 مللي ثانية.
الصيغة
quantilesTimingWeighted(level1, level2, ...)(expr, weight)المعلمات
level— مستويات الكمّ. عدد ثابت واحد أو أكثر من الأعداد ذات الفاصلة العائمة من 0 إلى 1. نوصي باستخدام قيمlevelضمن النطاق[0.01, 0.99].Float*
الوسيطات
expr— تعبير على قيم العمود ينتج أنواع بيانات رقمية أوDateأوDateTime. إذا مُرِّرت قيم سالبة إلى الدالة، يكون السلوك غير معرّف. وإذا كانت القيمة أكبر من 30,000 (أي زمن تحميل صفحة يزيد على 30 ثانية)، فيُفترض أنها 30,000.(U)Int*أوFloat*أوDateأوDateTimeweight— عمود يحتوي على أوزان عناصر التسلسل. والوزن هو عدد مرات تكرار القيمة.UInt*
القيمة المُعادة
مصفوفة من الكمّات للمستويات المحددة، وبالترتيب نفسه الذي حُدِّدت به المستويات. Array(Float32)
أمثلة
حساب عدة كمّات زمنية موزونة
CREATE TABLE t (response_time UInt32, weight UInt32) ENGINE = Memory;
INSERT INTO t VALUES (68, 1), (104, 2), (112, 3), (126, 2), (138, 1), (162, 1);
SELECT quantilesTimingWeighted(0.5, 0.99)(response_time, weight) FROM t;┌─quantilesTimingWeighted(0.5, 0.99)(response_time, weight)─┐
│ [112,162] │
└───────────────────────────────────────────────────────────┘راجع أيضًا