#clickhouse
Вопрос:
Возможно ли в click house, чтобы столбец возвращал массив объектов?
Я знаю, что groupArray может возвращать определенный столбец, однако я хочу вернуть все столбцы.
Ответ №1:
Да, ClickHouse может возвращать массив данных.
CREATE TABLE mytable (
dt DateTime,
...
arr Array(String)
) Engine=Memory()
Если вы хотите вернуть все столбцы таблицы в виде массива, то все столбцы должны иметь один и тот же тип, поскольку массивы должны содержать элементы одного и того же типа. Поэтому будет действительным следующее:
CREATE TABLE array_of_all_columns(
a String,
b String
) Engine=Memory
Затем вы можете получить все столбцы в виде массива:
SELECT array(*) as arr FROM array_of_all_columns;
┌─arr───────┐
│ ['A','B'] │
└───────────┘
┌─arr───────┐
│ ['C','D'] │
└───────────┘
В приведенном выше примере, если у вас есть 3-й столбец , который не относится к типу String
, то вы получите эту ошибку:
DB::Exception: There is no supertype for types String, String, Int32 because some of them are String/FixedString and some of them are not: While processing [a, b, c].
Комментарии:
1. Спасибо! Значит, все они должны быть одного типа?
2. @YayoUK, да, все столбцы должны быть одного типа.