الانتقال إلى المحتوى الرئيسي

uniqCombined64

أُضيف في: v20.1.0 يحسب العدد التقريبي لقيم الوسائط المختلفة. وهو مماثل لـ uniqCombined، لكنه يستخدم تجزئة 64 بت لجميع أنواع البيانات بدلًا من استخدامها فقط مع نوع البيانات String. توفّر هذه الدالة النتيجة بشكل حتمي (أي إنها لا تعتمد على ترتيب معالجة الاستعلام).
وبما أنها تستخدم تجزئة 64 بت لجميع الأنواع، فإن النتيجة لا تعاني من ارتفاع كبير جدًا في نسبة الخطأ عند أعداد العناصر المميّزة الأكبر بكثير من UINT_MAX، كما هو الحال في uniqCombined الذي يستخدم تجزئة 32 بت للأنواع غير String.
بالمقارنة مع الدالة uniq، فإن الدالة uniqCombined64:
  • تستهلك ذاكرة أقل بعدة مرات
  • تحسب بدقة أعلى بعدة مرات
تحسب هذه الدالة تجزئة 64 بت لجميع أنواع البيانات ولكل المعلمات في التجميع، ثم تستخدمها في الحسابات. وهي تستخدم مزيجًا من ثلاث خوارزميات: المصفوفة، وجدول التجزئة، وHyperLogLog مع جدول لتصحيح الأخطاء:
  • عند وجود عدد صغير من العناصر المميّزة، تُستخدم مصفوفة
  • عندما يزداد حجم المجموعة، يُستخدم جدول تجزئة
  • ومع عدد أكبر من العناصر، يُستخدم HyperLogLog، الذي يشغل مقدارًا ثابتًا من الذاكرة
الصياغة
uniqCombined64(HLL_precision)(x[, ...])
uniqCombined64(x[, ...])
المعلمات
  • HLL_precision — اختياري. اللوغاريتم الثنائي لعدد الخلايا في HyperLogLog. القيمة الافتراضية هي 17، وهو ما يعادل فعليًا 96 KiB من المساحة (2^17 خلية، 6 بتات لكل خلية). النطاق: [12, 20]. UInt8
الوسيطات القيمة المعادة تعيد عددًا من النوع UInt64 يمثّل العدد التقريبي لقيم الوسيطات المختلفة. UInt64 أمثلة مثال على مجموعة بيانات كبيرة
Query
SELECT uniqCombined64(number) FROM numbers(1e10);
Response
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘
مقارنة بـ uniqCombined
Query
-- uniqCombined64 with large dataset
SELECT uniqCombined64(number) FROM numbers(1e10);

-- uniqCombined with same dataset shows poor approximation
SELECT uniqCombined(number) FROM numbers(1e10);
Response
┌─uniqCombined64(number)─┐
│             9998568925 │ -- 10.00 billion
└────────────────────────┘
┌─uniqCombined(number)─┐
│           5545308725 │ -- 5.55 billion
└──────────────────────┘
انظر أيضًا
آخر تعديل في ٢٩ يونيو ٢٠٢٦