Как преобразовать строку в массив в ClickHouse / How to transform string to array in ClickHouse
Сегодня я столкнулся с проблемой, что в документации ClickHouse нет функции преобразования строки в массив. Поискав в StackOverflow, я тоже ничего внятно не нашел.
Перед прочтением рекомендую подписаться на мой телеграмм канал, где вы сможете найти актуальные новости, примеры и хаки в мире разработки: @asanov_tech
Попробую объяснить на примере:
У вас есть некая колонка data типа String, которая хранит JSON:
{"user_id":123456,"item_ids":[1203,1204,1205],"count":5}
Вы хотите преобразовать поле item_ids в массив, чтобы в дальнейшем с ним производить любые функции по работе с массивами (ссылка на документацию в конце поста).
Как преобразовать строку в массив из JSON
Строка может содержать не в отдельной колонке, а, например, в поле json. Пример ниже продемонстрирует как этого добиться:
- С помощью функции visitParamExtractRaw достать значение поля item_ids в сыром виде:
visitParamExtractRaw(data, 'item_ids')
- С помощью функции trim убрать лишние квадратные скобки по краям:
trim(BOTH '[]' FROM visitParamExtractRaw(data, 'reward_ids'))
p.s. Можно также убрать и фигурные скобки, просто замените [] на {}
С помощью splitByChar разделить строку на массив, указав знак , в качестве разделителя:
splitByChar(',', trim(BOTH '[]' FROM visitParamExtractRaw(data, 'reward_ids')))
SELECT splitByChar(',', trim(BOTH '[]' FROM visitParamExtractRaw(data, 'reward_ids'))) FROM some_table;
Ссылки:
Документация ClickHouse: https://clickhouse.tech/docs/ru/sql-reference/functions/splitting-merging-functions/.
Функции ClickHouse по работе с массивами: https://clickhouse.tech/docs/ru/sql-reference/functions/array-functions/
Как разложить массив на несколько строк в ClickHouse – http://greenwebstudio.blogspot.com/2021/07/how-to-ungroup-field-in-clickhouse.html?utm_source=greenwebstudio&utm_content=string_to_array_clickhouse
Если было полезным, большая просьба подписаться на мой телеграмм канал и рассказать друзьям: @asanov_tech
Комментарии
Отправить комментарий