uniqHLL12
أُضيف في: v1.1.0
يحسب العدد التقريبي لقيم الوسائط المختلفة باستخدام خوارزمية HyperLogLog.
تفاصيل التنفيذ
تحسب هذه الدالة قيمة hash لجميع المعلمات في التجميع، ثم تستخدمها في الحساب. وتستخدم خوارزمية HyperLogLog لتقدير عدد قيم الوسائط المختلفة.
يُستخدم 2^12 من الخلايا ذات 5 بت. حجم الحالة يزيد قليلًا على 2.5 كيلوبايت. النتيجة ليست دقيقة جدًا (بهامش خطأ يصل إلى ~10%) لمجموعات البيانات الصغيرة (<10K عنصر). ومع ذلك، تكون النتيجة دقيقة بدرجة معقولة لمجموعات البيانات عالية الكاردينالية (10K-100M)، مع حد أقصى للخطأ يبلغ ~1.6%. واعتبارًا من 100M، يزداد خطأ التقدير، وستُرجع الدالة نتائج غير دقيقة جدًا لمجموعات البيانات ذات الكاردينالية العالية للغاية (1B+ عنصر).
توفّر نتيجة حتمية (إذ لا تعتمد على ترتيب معالجة الاستعلام).
الصياغة
uniqHLL12(x[, ...])الوسيطات
x— تقبل الدالة عددًا متغيرًا من المعاملات.Tuple(T)أوArray(T)أوDateأوDateTimeأوStringأو(U)Int*أوFloat*أوDecimal
القيمة المعادة
تعيد عددًا من النوع UInt64 يمثّل العدد التقريبي لقيم الوسيطات المختلفة. UInt64
أمثلة
الاستخدام الأساسي
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;┌─hll_unique_categories─┐
│ 3 │
└───────────────────────┘راجع أيضًا