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

الوصف

يمكن تطبيق المُركِّبين Array وIf على الدالة uniq لاحتساب عدد القيم الفريدة في المصفوفات ضمن الصفوف التي يكون فيها الشرط true، وذلك باستخدام دالة المُركِّب التجميعي uniqArrayIf.
-يمكن الجمع بين -If و-Array. لكن يجب أن يأتي Array أولًا، ثم If.
يفيد ذلك عندما تريد احتساب العناصر الفريدة في مصفوفة بناءً على شروط محددة من دون الحاجة إلى استخدام arrayJoin.

مثال للاستخدام

عدّ المنتجات الفريدة التي تمت مشاهدتها حسب نوع الشريحة ومستوى التفاعل

في هذا المثال، سنستخدم جدولًا يتضمن بيانات جلسات تسوّق المستخدمين لعدّ عدد المنتجات الفريدة التي شاهدها مستخدمون ضمن شريحة محددة، مع اعتماد مقياس التفاعل المتمثل في الوقت الذي قضوه في الجلسة.
Query
CREATE TABLE user_shopping_sessions
(
    session_date Date,
    user_segment String,
    viewed_products Array(String),
    session_duration_minutes Int32
) ENGINE = Memory;

INSERT INTO user_shopping_sessions VALUES
    ('2024-01-01', 'new_customer', ['smartphone_x', 'headphones_y', 'smartphone_x'], 12),
    ('2024-01-01', 'returning', ['laptop_z', 'smartphone_x', 'tablet_a'], 25),
    ('2024-01-01', 'new_customer', ['smartwatch_b', 'headphones_y', 'fitness_tracker'], 8),
    ('2024-01-02', 'returning', ['laptop_z', 'external_drive', 'laptop_z'], 30),
    ('2024-01-02', 'new_customer', ['tablet_a', 'keyboard_c', 'tablet_a'], 15),
    ('2024-01-02', 'premium', ['smartphone_x', 'smartwatch_b', 'headphones_y'], 22);

-- Count unique products viewed by segment type and engagement level
SELECT 
    session_date,
    -- Count unique products viewed in long sessions by new customers
    uniqArrayIf(viewed_products, user_segment = 'new_customer' AND session_duration_minutes > 10) AS new_customer_engaged_products,
    -- Count unique products viewed by returning customers
    uniqArrayIf(viewed_products, user_segment = 'returning') AS returning_customer_products,
    -- Count unique products viewed across all sessions
    uniqArray(viewed_products) AS total_unique_products
FROM user_shopping_sessions
GROUP BY session_date
ORDER BY session_date
FORMAT Vertical;
Response
Row 1:
──────
session_date:                2024-01-01
new_customer⋯ed_products:    2
returning_customer_products: 3
total_unique_products:       6

Row 2:
──────
session_date:                2024-01-02
new_customer⋯ed_products:    2
returning_customer_products: 2
total_unique_products:       7

راجع أيضًا

آخر تعديل في ٢٥ يونيو ٢٠٢٦