Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined64

uniqCombined64

أُضيف في: v20.1.0

يحسب العدد التقريبي لقيم الوسائط المختلفة. وهو مماثل لـ uniqCombined، لكنه يستخدم تجزئة 64 بت لجميع أنواع البيانات بدلًا من استخدامها فقط مع نوع البيانات 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

أمثلة

مثال على مجموعة بيانات كبيرة

SELECT uniqCombined64(number) FROM numbers(1e10);
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘

مقارنة بـ uniqCombined

-- uniqCombined64 with large dataset
SELECT uniqCombined64(number) FROM numbers(1e10);

-- uniqCombined with same dataset shows poor approximation
SELECT uniqCombined(number) FROM numbers(1e10);
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘
┌─uniqCombined(number)─┐
│           5545308725 │
└──────────────────────┘

انظر أيضًا

Navigation