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