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

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']             │
   └─────────┴───────────────────────────────────────────────────────────────────────────────────────────┘