quantilesGK
قُدِّمت في: v23.4.0
تحسب عدة كوانتايلات لتسلسل بيانات رقمية عند مستويات مختلفة في الوقت نفسه باستخدام خوارزمية Greenwald-Khanna.
تعمل هذه الدالة بطريقة مشابهة لـ quantileGK، لكنها تتيح حساب عدة مستويات للكوانتايلات في تمريرة واحدة، ما يجعلها أكثر كفاءة من استدعاء دوال الكوانتايلات الفردية.
تُستخدم خوارزمية Greenwald-Khanna لحساب الكوانتايلات على تدفق من البيانات بكفاءة عالية جدًا. وقد طرحها Michael Greenwald وSanjeev Khanna في عام 2001. وتتميز الخوارزمية بكفاءة عالية جدًا، إذ لا تتطلب سوى مساحة O(log n) وزمن O(log log n) لكل عنصر (حيث إن n هو حجم المُدخلات). كما أنها عالية الدقة أيضًا، إذ توفر قيم كوانتايلات تقريبية بدقة قابلة للتحكم.
البنية
quantilesGK(accuracy, level1, level2, ...)(expr)المعلمات
accuracy— دقة الكوانتايلات. عدد صحيح موجب ثابت. كلما زادت قيمة الدقة، قلّ الخطأ. على سبيل المثال، إذا ضُبطت وسيطة الدقة على 100، فسيكون خطأ الكوانتايلات المحسوبة لا يتجاوز 1% باحتمال عالٍ. هناك مفاضلة بين دقة الكوانتايلات المحسوبة والتعقيد الحسابي للخوارزمية.UInt*level— مستويات الكوانتايل. عدد واحد أو أكثر من الأعداد الثابتة ذات الفاصلة العائمة من 0 إلى 1.Float*
الوسائط
expr— تعبير على قيم العمود ينتج عنه أنواع بيانات رقمية أوDateأوDateTimeأوDateTime64.(U)Int*أوInt128أوUInt128أوInt256أوUInt256أوFloat*أوDecimal*أوDateأوDateTimeأوDateTime64
القيمة المعادة
مصفوفة من الكوانتايلات للمستويات المحددة، وبالترتيب نفسه الذي حُددت به هذه المستويات. بالنسبة إلى أنواع البيانات الرقمية، يطابق تنسيق الإخراج تنسيق الإدخال. Array((U)Int*) أو Array(Int128) أو Array(UInt128) أو Array(Int256) أو Array(UInt256) أو Array(Float*) أو Array(Decimal*) أو Array(Date) أو Array(DateTime) أو Array(DateTime64)
أمثلة
حساب عدة كوانتايلات باستخدام خوارزمية GK
SELECT quantilesGK(1, 0.25, 0.5, 0.75)(number + 1) FROM numbers(1000);┌─quantilesGK(1, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [1,1,1] │
└──────────────────────────────────────────────────┘كوانتايلات بدقة أعلى
SELECT quantilesGK(100, 0.25, 0.5, 0.75)(number + 1) FROM numbers(1000);┌─quantilesGK(100, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [251,498,741] │
└────────────────────────────────────────────────────┘