quantileTimingWeighted
قُدِّمت في: v1.1.0
تحسب هذه الدالة، بالدقة المحددة، الكمّ لتسلسل من البيانات الرقمية وفقًا لوزن كل عنصر في التسلسل.
تكون النتيجة حتمية (أي إنها لا تعتمد على ترتيب معالجة الاستعلام). وقد جرى تحسين هذه الدالة للعمل مع التسلسلات التي تصف توزيعات مثل أزمنة تحميل صفحات الويب أو أزمنة استجابة الواجهة الخلفية.
عند استخدام عدة دوال quantile* بمستويات مختلفة في استعلام واحد، لا تُدمج حالاتها الداخلية (أي إن الاستعلام يعمل بكفاءة أقل مما يمكن أن يعمل به). في هذه الحالة، استخدم الدالة quantiles.
الدقة
يكون الحساب دقيقًا إذا:
- لا يتجاوز العدد الإجمالي للقيم 5670.
- يتجاوز العدد الإجمالي للقيم 5670، لكن زمن تحميل الصفحة يقل عن 1024ms.
وإلا، تُقرَّب نتيجة الحساب إلى أقرب مضاعف لـ 16 ms.
الصيغة
quantileTimingWeighted(level)(expr, weight)الأسماء البديلة: medianTimingWeighted
المعلمات
level— اختياري. مستوى الكمّ. عدد ثابت بفاصلة عائمة من 0 إلى 1. نوصي باستخدام قيمةlevelضمن النطاق[0.01, 0.99]. القيمة الافتراضية: 0.5. عندlevel=0.5تحسب الدالة الوسيط.Float*
الوسيطات
expr— تعبير على قيم عمود ينتج أنواع بيانات رقمية أوDateأوDateTime. إذا مُرِّرت قيم سالبة إلى الدالة، فسيكون السلوك غير محدد. إذا كانت القيمة أكبر من 30,000 (زمن تحميل صفحة يزيد على 30 ثانية)، فيُفترض أنها 30,000.(U)Int*أوFloat*أوDateأوDateTimeweight— عمود يحتوي على أوزان عناصر التسلسل. الوزن هو عدد مرات ظهور القيمة.UInt*
القيمة المعادة
الكمّ عند المستوى المحدد. 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 quantileTimingWeighted(response_time, weight) FROM t;┌─quantileTimingWeighted(response_time, weight)─┐
│ 112 │
└───────────────────────────────────────────────┘