uniq
أُضيفت في: v1.1.0 تحسب العدد التقريبي للقيم المختلفة للوسيطة. تستخدم هذه الدالة خوارزمية تكيفية لأخذ العينات. وبالنسبة إلى حالة الحساب، تستخدم الدالة عيّنة من قيم تجزئة للعناصر حتى 65536. تتميز هذه الخوارزمية بدقة وكفاءة عاليتين جدًا على CPU. وعندما يحتوي الاستعلام على عدة دوال من هذا النوع، يكون استخدام uniq قريبًا جدًا في السرعة من استخدام الدوال التجميعية الأخرى.تفاصيل التنفيذ
تفاصيل التنفيذ
تحسب هذه الدالة قيمة تجزئة لجميع المعلمات في التجميع، ثم تستخدمها في الحسابات.
وهي تستخدم خوارزمية تكيفية لأخذ العينات.
وبالنسبة إلى حالة الحساب، تستخدم الدالة عيّنة من قيم تجزئة للعناصر حتى 65536.
تتميز هذه الخوارزمية بدقة وكفاءة عاليتين جدًا على CPU.
وعندما يحتوي الاستعلام على عدة دوال من هذا النوع، يكون استخدام
uniq قريبًا جدًا في السرعة من استخدام الدوال التجميعية الأخرى.تحتفظ العيّنة بقيم تجزئة بطول 32 بت، وهذه لا تستطيع التمييز بين أكثر من بضعة مليارات من القيم، لذلك
يُحتفظ أيضًا بعيّنة صغيرة شديدة التخفيف من قيم التجزئة الكاملة بطول 64 بت (نحو قيمة تجزئة واحدة لكل 262144 قيمة،
وبحد أقصى 16384 قيمة تجزئة)، ويتحوّل التقدير إلى الاعتماد عليها عند نحو ملياري قيمة. وبذلك يظل التقدير دقيقًا
(في حدود 1% تقريبًا) عند أعداد عناصر تبلغ مئات المليارات وأكثر، في حين كانت الخوادم الأقدم
من الإصدار 26.8 تعيد نتائج عديمة المعنى (issue #6078). ولا تتضمن الحالات التي كتبتها تلك الخوادم عيّنة 64 بت،
لذا فإن الدمج معها لا يحافظ إلا على دقة 32 بت للقيم المدمجة منها.x— تأخذ الدالة عددًا متغيرًا من المعلمات.Tuple(T)أوArray(T)أوDateأوDateTimeأوStringأو(U)Int*أوFloat*أوDecimal
UInt64
أمثلة
مثال للاستخدام
Query
Response
Query
Response