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

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

Перед прочтением рекомендую подписаться на мой телеграмм канал, где вы сможете найти актуальные новости, примеры и хаки в мире разработки: @asanov_tech

Например, разложить колонку 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! Приветствуются конструктивные комментарии. Спасибо.
P.S. А если поле у вас не массив, а строка, то об этом можно прочесть в нашем блоке по ссылке Как преобразовать строку в массив в ClickHouse
Если было полезным, большая просьба подписаться на мой телеграмм канал и рассказать друзьям: @asanov_tech
Ссылки:
Документация ClickHouse по array join – https://clickhouse.tech/docs/ru/sql-reference/statements/select/array-join/ККак преобразовать строку в массив в ClickHouse – https://greenwebstudio.blogspot.com/2021/06/clickhouse-how-to-transform-string-to.html?utm_source=greenwebstudio&utm_content=array_join



Комментарии

Популярные сообщения из этого блога

Как преобразовать строку в массив в ClickHouse / How to transform string to array in ClickHouse

Экспорт одной таблицы базы данных или mysqldump одной таблицы (MySQL)