Как разложить массив на несколько строк в ClickHouse

Как разложить массив на несколько строк в ClickHouse
/assets/blog/authors/asanov_small.jpg
Ildar Asanov
#sql#clickhouse

Как разложить массив в столбец в ClickHouse

Иногда возникает ситуация, когда нужно разложить поле, содержащее столбец-массив на несколько строк, то есть вынести в столбец каждый отдельный элемент массива. Другими словами: как разгруппировать колонку в несколько строк.

Например, разложить колонку room_number на несколько строк:

Исходные данные

В примере ниже мы разложили колонку room_number на несколько строк для consumer_id = 1694953573. Получаем следующий результат:

Результат

Как видим из примера выше, каждый элемент массива room_numbers теперь на отдельной строке.

Делается это при помощи конструкции ARRAY JOIN. Синтаксис следующий:

[LEFT] ARRAY JOIN <array>

Вместо <array> вы должны указать колонку или выражение, которое возвращает массив.

Для нашего примера запрос будет таким:

SELECT 
    consumer_id,
    room_number,
    order_date
FROM orders
    ARRAY JOIN room_numbers as room_number
WHERE consumer_id = 1694953573;

Profit! Приветствуются конструктивные комментарии в тг @asanovpro. Спасибо.

P.S. А если поле у вас не массив, а строка, то об этом можно прочесть в нашем блоге по ссылке Как преобразовать строку в массив в ClickHouse

Если было полезным, большая просьба подписаться на мой телеграмм канал и рассказать друзьям: @asanovpro

Ссылки:

More Stories