الوصف
يمكن تطبيق المُركِّب Array
على الدالة uniq
لحساب العدد التقريبي للعناصر الفريدة عبر جميع المصفوفات،
باستخدام دالة المُركِّب التجميعي uniqArray.
تكون الدالة uniqArray مفيدة عندما تحتاج إلى حساب العناصر الفريدة عبر
عدة مصفوفات ضمن مجموعة بيانات. وهي مكافئة لاستخدام uniq(arrayJoin())، حيث
تعمل arrayJoin أولًا على تسطيح المصفوفات، ثم تحسب uniq العناصر الفريدة.
مثال على الاستخدام
في هذا المثال، سنستخدم مجموعة بيانات نموذجية عن اهتمامات المستخدمين عبر فئات
مختلفة لتوضيح كيفية عمل uniqArray. وسنقارنها مع
uniq(arrayJoin()) لبيان الفرق في احتساب العناصر الفريدة.
CREATE TABLE user_interests
(
user_id UInt32,
interests Array(String)
) ENGINE = Memory;
INSERT INTO user_interests VALUES
(1, ['reading', 'gaming', 'music']),
(2, ['gaming', 'sports', 'music']),
(3, ['reading', 'cooking']);
SELECT
uniqArray(interests) AS unique_interests_total,
uniq(arrayJoin(interests)) AS unique_interests_arrayJoin
FROM user_interests;تحسب الدالة uniqArray العناصر الفريدة عبر جميع المصفوفات مجتمعة، على نحو مماثل لـ uniq(arrayJoin()).
في هذا المثال:
- تُرجع
uniqArrayالقيمة 5 لأن هناك 5 اهتمامات فريدة لدى جميع المستخدمين: 'reading'، 'gaming'، 'music'، 'sports'، 'cooking' - تُرجع
uniq(arrayJoin())أيضًا القيمة 5، مما يوضح أن كلتا الدالتين تحسبان العناصر الفريدة عبر جميع المصفوفات
┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │ 5 │ 5 │
└────────────────────────┴────────────────────────────┘