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
الوسيطات
x— عدد متغيّر من المعلمات.Tuple(T)أوArray(T)أوDateأوDateTimeأوStringأو(U)Int*أوFloat*أوDecimal
القيمة المعادة
تعيد عددًا من النوع 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 │
└──────────────────────┘انظر أيضًا