Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined

uniqCombined

قُدِّمت في: v1.1.0

تحسب العدد التقريبي لقيم الوسيطات المختلفة. وتوفّر النتيجة بشكل حتمي (أي إنها لا تعتمد على ترتيب معالجة الاستعلام).

مقارنةً بالدالة uniq، فإن الدالة uniqCombined:

  • تستهلك ذاكرة أقل بعدة مرات
  • تحسب بدقة أعلى بعدة مرات
  • يكون أداؤها عادةً أقل قليلًا. وفي بعض السيناريوهات، قد تحقق uniqCombined أداءً أفضل من uniq، على سبيل المثال مع الاستعلامات الموزعة التي تنقل عددًا كبيرًا من حالات التجميع عبر الشبكة
تفاصيل التنفيذ

تحسب هذه الدالة قيمة hash (بطول 64 بت لـ String و32 بت بخلاف ذلك) لجميع المعلمات في التجميع، ثم تستخدمها في الحسابات. وتستخدم مزيجًا من ثلاث خوارزميات: المصفوفة، وجدول hash، وHyperLogLog مع جدول لتصحيح الأخطاء:

  • عند وجود عدد صغير من العناصر المميّزة، تُستخدم مصفوفة
  • عندما يصبح حجم المجموعة أكبر، يُستخدم جدول hash
  • وعند وجود عدد أكبر من العناصر، يُستخدم HyperLogLog، الذي يشغل مقدارًا ثابتًا من الذاكرة

الصيغة

uniqCombined(HLL_precision)(x[, ...])
uniqCombined(x[, ...])

المعلمات

  • HLL_precision — اختياري. اللوغاريتم للأساس 2 لعدد الخلايا في HyperLogLog. القيمة الافتراضية هي 17، وهو ما يعادل فعليًا مساحة قدرها 96 KiB ‏(2^17 خلية، 6 بتات لكل خلية). النطاق: [12, 20]. UInt8

الوسيطات

القيمة المُعادة

تُرجع عددًا من النوع UInt64 يمثّل العدد التقريبي لقيم الوسيطات المختلفة. UInt64

أمثلة

الاستخدام الأساسي

SELECT uniqCombined(number) FROM numbers(1e6);
┌─uniqCombined(number)─┐
│              1001148 │
└──────────────────────┘

بدقة مخصّصة

SELECT uniqCombined(15)(number) FROM numbers(1e5);
┌─uniqCombined(15)(number)─┐
│                   100768 │
└──────────────────────────┘

انظر أيضًا

Navigation