Перейти к основному содержимому
Перейти к основному содержимому

Array(T)

Массив элементов типа T, начиная с индекса 1. T может быть любым типом данных, включая массив.

Создание массива

Вы можете использовать функцию для создания массива:

Вы также можете использовать квадратные скобки.

Пример создания массива:

Работа с типами данных

При создании массива на лету, ClickHouse автоматически определяет тип аргумента как самый узкий тип данных, который может хранить все перечисленные аргументы. Если имеются какие-либо значения Nullable или литеральные NULL, тип элемента массива также становится Nullable.

Если ClickHouse не смог определить тип данных, генерируется исключение. Это происходит, например, при попытке создать массив со строками и числами одновременно (SELECT array(1, 'a')).

Примеры автоматического определения типа данных:

Если вы попытаетесь создать массив с несовместимыми типами данных, ClickHouse выдаст исключение:

Размер массива

Можно определить размер массива, используя подколонку size0, не читая всю колонку. Для многомерных массивов можно воспользоваться sizeN-1, где N — это нужное измерение.

Пример

Запрос:

Результат:

Чтение вложенных подколонок из массива

Если вложенный тип T внутри Array имеет подколонки (например, если это именованный кортеж), вы можете читать его подколонки из типа Array(T) с теми же именами подколонок. Тип подколонки будет Array типа оригинальной подколонки.

Пример