Перейти к основному содержанию
Перейти к основному содержанию

groupArrayArray

Агрегирует массивы в единый более крупный массив этих массивов. Комбинирует функцию groupArray с комбинатором Array.

Псевдоним: array_concat_agg

Пример

У нас есть данные, которые фиксируют сессии просмотра сайта пользователями. Каждая сессия содержит последовательность страниц, которые посетил конкретный пользователь. Мы можем использовать функцию groupArrayArray, чтобы анализировать закономерности посещения страниц для каждого пользователя.

CREATE TABLE website_visits (
    user_id UInt32,
    session_id UInt32,
    page_visits Array(String)
) ENGINE = Memory;

INSERT INTO website_visits VALUES
(101, 1, ['homepage', 'products', 'checkout']),
(101, 2, ['search', 'product_details', 'contact']),
(102, 1, ['homepage', 'about_us']),
(101, 3, ['blog', 'homepage']),
(102, 2, ['products', 'product_details', 'add_to_cart', 'checkout']);
SELECT
    user_id,
    groupArrayArray(page_visits) AS user_session_page_sequences
FROM website_visits
GROUP BY user_id;
   ┌─user_id─┬─user_session_page_sequences───────────────────────────────────────────────────────────────┐
1. │     101 │ ['homepage','products','checkout','search','product_details','contact','blog','homepage'] │
2. │     102 │ ['homepage','about_us','products','product_details','add_to_cart','checkout']             │
   └─────────┴───────────────────────────────────────────────────────────────────────────────────────────┘