Как разложить массив в столбец в 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
Ссылки:
- Документация ClickHouse по array join – https://clickhouse.tech/docs/ru/sql-reference/statements/select/array-join/