Array(T)
Массив элементов типа T
, начиная с индекса 1. T
может быть любым типом данных, включая массив.
Создание массива
Вы можете использовать функцию для создания массива:
Вы также можете использовать квадратные скобки.
Пример создания массива:
Работа с типами данных
При создании массива на лету, ClickHouse автоматически определяет тип аргумента как самый узкий тип данных, который может хранить все перечисленные аргументы. Если имеются какие-либо значения Nullable или литеральные NULL, тип элемента массива также становится Nullable.
Если ClickHouse не смог определить тип данных, генерируется исключение. Это происходит, например, при попытке создать массив со строками и числами одновременно (SELECT array(1, 'a')
).
Примеры автоматического определения типа данных:
Если вы попытаетесь создать массив с несовместимыми типами данных, ClickHouse выдаст исключение:
Размер массива
Можно определить размер массива, используя подколонку size0
, не читая всю колонку. Для многомерных массивов можно воспользоваться sizeN-1
, где N
— это нужное измерение.
Пример
Запрос:
Результат:
Чтение вложенных подколонок из массива
Если вложенный тип T
внутри Array
имеет подколонки (например, если это именованный кортеж), вы можете читать его подколонки из типа Array(T)
с теми же именами подколонок. Тип подколонки будет Array
типа оригинальной подколонки.
Пример