uniqCombined64
uniqCombined، لكنه يستخدم تجزئة 64 بت لجميع أنواع البيانات بدلًا من استخدامها فقط مع نوع البيانات String.
توفّر هذه الدالة النتيجة بشكل حتمي (أي إنها لا تعتمد على ترتيب معالجة الاستعلام).
وبما أنها تستخدم تجزئة 64 بت لجميع الأنواع، فإن النتيجة لا تعاني من ارتفاع كبير جدًا في نسبة الخطأ عند أعداد العناصر المميّزة الأكبر بكثير من
UINT_MAX، كما هو الحال في uniqCombined الذي يستخدم تجزئة 32 بت للأنواع غير String.- تستهلك ذاكرة أقل بعدة مرات
- تحسب بدقة أعلى بعدة مرات
تفاصيل التنفيذ
تفاصيل التنفيذ
تحسب هذه الدالة تجزئة 64 بت لجميع أنواع البيانات ولكل المعلمات في التجميع، ثم تستخدمها في الحسابات.
وهي تستخدم مزيجًا من ثلاث خوارزميات: المصفوفة، وجدول التجزئة، وHyperLogLog مع جدول لتصحيح الأخطاء:
- عند وجود عدد صغير من العناصر المميّزة، تُستخدم مصفوفة
- عندما يزداد حجم المجموعة، يُستخدم جدول تجزئة
- ومع عدد أكبر من العناصر، يُستخدم HyperLogLog، الذي يشغل مقدارًا ثابتًا من الذاكرة
HLL_precision— اختياري. اللوغاريتم الثنائي لعدد الخلايا في HyperLogLog. القيمة الافتراضية هي 17، وهو ما يعادل فعليًا 96 KiB من المساحة (2^17 خلية، 6 بتات لكل خلية). النطاق: [12, 20].UInt8
x— عدد متغيّر من المعلمات.Tuple(T)أوArray(T)أوDateأوDateTimeأوStringأو(U)Int*أوFloat*أوDecimal
UInt64
أمثلة
مثال على مجموعة بيانات كبيرة
Query
Response
Query
Response