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

uniqHLL12

أُضيف في: v1.1.0 يحسب العدد التقريبي لقيم الوسائط المختلفة باستخدام خوارزمية HyperLogLog.
لا نوصي باستخدام هذه الدالة. في معظم الحالات، استخدم الدالة uniq أو uniqCombined.
تحسب هذه الدالة قيمة hash لجميع المعلمات في التجميع، ثم تستخدمها في الحساب. وتستخدم خوارزمية HyperLogLog لتقدير عدد قيم الوسائط المختلفة.يُستخدم 2^12 من الخلايا ذات 5 بت. حجم الحالة يزيد قليلًا على 2.5 كيلوبايت. النتيجة ليست دقيقة جدًا (بهامش خطأ يصل إلى ~10%) لمجموعات البيانات الصغيرة (<10K عنصر). ومع ذلك، تكون النتيجة دقيقة بدرجة معقولة لمجموعات البيانات عالية الكاردينالية (10K-100M)، مع حد أقصى للخطأ يبلغ ~1.6%. واعتبارًا من 100M، يزداد خطأ التقدير، وستُرجع الدالة نتائج غير دقيقة جدًا لمجموعات البيانات ذات الكاردينالية العالية للغاية (1B+ عنصر).توفّر نتيجة حتمية (إذ لا تعتمد على ترتيب معالجة الاستعلام).
الصياغة
uniqHLL12(x[, ...])
الوسيطات القيمة المعادة تعيد عددًا من النوع UInt64 يمثّل العدد التقريبي لقيم الوسيطات المختلفة. UInt64 أمثلة الاستخدام الأساسي
Query
CREATE TABLE example_hll
(
    id UInt32,
    category String
)
ENGINE = Memory;

INSERT INTO example_hll VALUES
(1, 'A'), (2, 'B'), (3, 'A'), (4, 'C'), (5, 'B'), (6, 'A');

SELECT uniqHLL12(category) AS hll_unique_categories
FROM example_hll;
Response
┌─hll_unique_categories─┐
│                     3 │
└───────────────────────┘
راجع أيضًا
آخر تعديل في ٢٩ يونيو ٢٠٢٦