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